oc 基本语法 类 静态变量 常量
//
// ReViewClass.h
// hellowWorld
// 本类是oc复习练手类
// Created by hongtao on 2018/3/26.
// Copyright © 2018年 hongtao. All rights reserved.
// #import <Foundation/Foundation.h> /**
OC常量:
头文件里声明常量:
extern NSString * const MyOwnConstant;
extern NSString * const YetAnotherConstant;
在.m中通过赋值定义常量:
NSString * const MyOwnConstant = @"myOwnConstant";
NSString * const YetAnotherConstant = @"yetAnotherConstant";
*/
//常量声明 注意:可以在@interface外面声明。
extern const NSString* EAST ;
extern const NSString* WEST ; @interface ReViewClass : NSObject{ /**
要点
(1)基类的私有属性能被继承,不能被使用。
(2)OC中的继承是单继承:也就是说一个类只能一个父类,不能继承多个父类
(3)OC只能单继承
(4)OC所有类都有NSbObject基类
**/ /**
范围修饰词
(1)@public (公开的)在有对象的前提下,任何地方都可以直接访问。
(2)@protected (受保护的)只能在当前类和子类的对象方法中访问 (默认访问权限)
(3)@private (私有的)只能在当前类的对象方法中才能直接访问
(4)@package (框架级别的)作用域介于私有和公开之间,只要处于同一个框架中就可以直接通 过变量名访问
**/
@public int _id ; @public NSString *_name ; /*
不写关键字默认是@private
private 变量能不能被继承?
能继承不能用,除非父类提供操作方法
*/
@private int classId ; }
//常量声明,可以放这里,但不能放上面{}内。
//extern const NSString* NORTH =@"north",不能在头文件里直接赋值。
extern const NSString* NORTH;
extern const NSString* SOUTH; @property (assign) NSString* mDescription ;
/*
属性:
(1)关键字@@property
(2)自动合成getter和setter方法。当声明一个属性(property)的时候编译器默认情况下会自动生成相关的getter和setter方法
(3)属性(property)关键词能够传递出相关行为的额外信息。属性提供了一些可能会使用的特性来进行声明,
包括
assign vs copy vs weak vs strong
atomic vs vs nonatomic
readwrite vs readonly 老版本 @property 需要在.m文件中对应使用synthesize 新版synthesize作用如下:
1.@synthesize 的作用:是为属性添加一个实例变量名,或者说别名。同时会为该属性生成 setter/getter 方法。
2.禁止@synthesize:如果某属性已经在某处实现了自己的 setter/getter ,可以使用 @dynamic 来阻止 @synthesize 自动生成新的 setter/getter 覆盖。
3.内存管理:@synthesize 和 ARC 无关。
4.使用:一般情况下无需对属性添加 @synthesize ,但一些特殊情形仍然需要,例如protocol中声明的属性。
*/ /**
在括号外面声明方法,比如set get 方法。
*/ -(void)set_id :(int)stuId ;
/*
set_id知识点:
(1)oc 语法中如果想使用和java一样的"." 去访问类成员变量,那么必须定义一个与变量名相同的get方法。
注意是get+变量名:
例如有set_id以后ReViewClass 实例指针可以 ReViewClass._id ;否则 ReViewClass->_id ;
(2)在点语中可以调用不带参数的任何方法如:-(NSString*)getIdAndName;
*/
-(void)setName:(NSString *)stuName; -(int)getId;
-(NSString*)getName ;
-(NSString*)getIdAndName: (NSUInteger) stuId;
-(NSString*)getIdAndName;
/*
可以方法重载 同名不同参数
*/ -(ReViewClass *) init ;
+(int) getInstanceCount ; @end
//
// ReViewClass.m
// hellowWorld
//
// Created by hongtao on 2018/3/26.
// Copyright © 2018年 hongtao. All rights reserved.
// #import "ReViewClass.h" /**
静态变量的特性:
(1)静态变量的作用域是与它定义的位置有关系
定义在文件中它的作用域就是整个文件,并且是私有的,其他的类或其他的文件是不可以访问该静态变量的
定义在方法内,它的作用域就是这方法,其他的方法是不可以访问该静态变量
(2)静态变量只初始化一次(和java中是一样的)
类方法和实例方法甚至函数都可以使用静态变量
(3)静态变量定义在源文件中(.m)
(4)静态变量可以定义在方法或函数体外,也可以定义在方法(类方法和实例方法)或函数体内。
静态变量定义在方法或函数体外
该方式适用于当静态变量会被本文件内的多个函数使用的情况,最好能把静态变量定义统一放在源文件的起始处(@implementation的外面), */
//静态变量实例。
static int instanceCount ; //常量赋值
const NSString* EAST =@"east" ;
const NSString* WEST =@"west"; @implementation ReViewClass @synthesize mDescription ; const NSString* NORTH = @"north" ; -(void)set_id:(int)stuId{
_id = stuId ;
}
-(void)setName:(NSString *)stuName{
_name = stuName ;
}
-(int)getId {
return _id ;
}
-(NSString*)getName {
return _name ;
} -(NSString*)getIdAndName: (NSUInteger) stuId;
{
NSMutableString * str = [[NSMutableString alloc]init];
[str appendString:_name];
[str appendString:[NSString stringWithFormat:@"id:%d",_id]];
return str ;
}
-(NSString*)getIdAndName;
{
NSMutableString * str = [[NSMutableString alloc]init];
if(nil!=_name)
[str appendString:_name];
[str appendString:[NSString stringWithFormat:@"id:%d",_id]];
return str ;
} +(NSString *)toString{
return [NSString stringWithFormat:@"id:%d" ,];
} //类方法用于操作静变量
+(int) getInstanceCount {
return instanceCount ;
}
-(ReViewClass*) init{
instanceCount++;
return [super init];
} @end
#import <Foundation/Foundation.h>
#import "ReViewClass.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
extern NSString* NORTH ; // insert code here...
NSLog(@"Hello, World!");
ReViewClass *reviwClass = [[ReViewClass alloc]init];
ReViewClass *reviwClass1 = [[ReViewClass alloc]init];
ReViewClass *reviwClass2 = [[ReViewClass alloc]init];
ReViewClass *reviwClass3 = [[ReViewClass alloc]init];
ReViewClass *reviwClass4 = [[ReViewClass alloc]init];
[reviwClass setName:@"hongtao"];
reviwClass._id = ;
reviwClass.mDescription = @"string property!";
NSLog(@"%@,%@",reviwClass.getIdAndName ,[reviwClass getName]);
NSLog(@"%d",[ReViewClass getInstanceCount]);
NSLog(@"%@",NORTH);
// NSString* temStr =[reviwClass getIdAndName];
//运行了相应方法,但方法返回值并没有得到- (void)performSelector:原型
[reviwClass performSelector:@selector(getIdAndName:) withObject:@() afterDelay:(1.2f)]; }
return ;
}
oc 基本语法 类 静态变量 常量的更多相关文章
- PHP 类属性 类静态变量的访问
php的类属性其实有两种,一种是类常量,一种是类静态变量.两种容易引起混淆. 如同静态类方法和类实例方法一样,静态类属性和实例属性不能重定义(同名),但静态属性可以和类常量同名. <?php c ...
- python类静态变量
python的类静态变量直接定义在类中即可,不需要修饰符,如: 1 class Test: stc_attr = 1 def __init__(self,attr1,attr2): self.attr ...
- php 类静态变量 和 常量消耗内存及时间对比
在对类执行100w次循环后, 常量最快,变量其次,静态变量消耗时间最高 其中: 常量消耗:101.1739毫秒 变量消耗:2039.7689毫秒 静态变量消耗:4084.8911毫秒 测试代码: cl ...
- C++类静态变量的一种使用特例
不同进程里的数据默认情况下是互不影响的. 静态变量是属于类本身的,它的所有实例可以共享这个静态变量,但是有个先天条件就是在同一个进程的情况下!!
- php类 静态变量赋值 static $name="abc"
<?php class test { static $name="abc"; } echo test::$name; 1.巴斯科范式 class_statement: var ...
- C# 静态变量、静态函数、实体变量、实体函数在一个类中的执行顺序
为了弄清这个代码,写了个测试,但是测试的结果和往上的代码有所差别,仁者见仁,智者见智了.如果我的测试用例用问题,欢迎指出. 首先,方法的是在被调用时执行,但是静态方法在所有地方都可以调用,应该在很早的 ...
- Java变量类型,实例变量 与局部变量 静态变量
实例变量: 实例变量在类中声明,但在方法的外面,构造函数或任何块. 当空间分配给某个对象在堆中,插槽为每个实例变量创建值. 当一个对象与使用关键字 “new” 来创建,在对象被销毁销毁创建的实例变量. ...
- C#静态变量 总结
在C#程序中,没有全局变量的概念,这意味着所有的成员变量只有该类的实例才能操作这些数据,这起到了“信息隐藏”的作用.但有些时候,这样做却不是个明智的选择. 假设我们要定义一个图书类,要求该类能保存图书 ...
- Java---类加载机制,构造方法,静态变量,(静态)代码块,父类,变量加载顺序
直接上代码: 代码1: public class ConstroctTest { private static ConstroctTest test = new ConstroctTest(); // ...
随机推荐
- c3p0似有属性配置
c3p0私有属性配置: 始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值.默认为3 initialPoolSize=20 接池中保留的最大连接数.默认为15 maxPoo ...
- ——Java中的collection和collections的区别
1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Coll ...
- JavaJDBC【六、连接池】
背景 1.连接是一种重要资源 2.频繁连接数据库会增加数据库压力 常用连接池 dbcp 1.导入jar包(官网下载) commons-dbcp.jar commons-pool.jar commons ...
- 【wifi移植 3】开发板wifi自动获取IP
内核版本:3.4.61 1. 配置内核,支持DHCP ~/kernel$ make menuconfig [*] Networking support ---> Networking opti ...
- STM32 ARM调试问题总结
文章转载自:http://xfjane.spaces.eepw.com.cn/articles/article/item/77908 基于ADS的ARM调试有关问题总结 1. 在添加文件的过程中你可 ...
- php生成word并下载
1.前端代码: index.html <!DOCTYPE html> <html> <head> <title>PHP生成Word文档</ti ...
- CSS基础学习-4.CSS属性_背景、颜色、边框
- iOS View的一些操作定义为宏
#define ViewOf(__View__,__TAG__) [__View__ viewWithTag:__TAG__]#define LabelOf(__View__,__TAG__) ((U ...
- 数据管理必看!Kendo UI for jQuery过滤器状态保持
Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...
- substring和substr的区别
substring和subsrt都是获取指定位数 字符串的方法: 语法: substring(start,end)/substring(one); substr(start,end)/substr(o ...