网站开发答辩设计预期目标,wordpress主题博客选项,优秀交互设计网站,seo网络推广技巧本文简要介绍了一些oc的基础类型#xff0c;包括数组、字典、字符串、消息传递、类、对象、方法、属性、协议和转发#xff0c;希望对你有帮助。
OC数据类型 打印—类似print
NSlog(hello word);数组
NSMutableArray #xff08;可变数组#xff09;和 NSAr…本文简要介绍了一些oc的基础类型包括数组、字典、字符串、消息传递、类、对象、方法、属性、协议和转发希望对你有帮助。
OC数据类型 打印—类似print
NSlog(hello word);数组
NSMutableArray 可变数组和 NSArray
NSArray *names [[NSArray alloc] initWithObjects:frank, duck, monkey, nil];
NSArray *names [NSArray arrayWithObjects:frank, duck, monkey, nil];
NSArray *names [frank, duck, monkey, cow]字典
NSMutableDictionary可变字典和NSDictionary
NSMutableDictionary *aMutableDictionary [[NSMutableArray alloc]init];
NSMutableDictionary *params [[NSMutableDictionary alloc] initWithDictionary:[self.dataMgr.preInvoiceModel toDictionary]];消息传递
//其实就是调用方法
[obj method: argument];
//c
obj.method(argument);声明字符串
NSString* myString My String\n;封装
声明类
以关键字interface作为开始end作为结束
interface MyObject : NSObject {int memberVar1; // 实体变量id memberVar2;
}(return_type) class_method; // 类方法-(return_type) instance_method1; // 实例方法
-(return_type) instance_method2: (int) p1;
-(return_type) instance_method3: (int) p1 andPar: (int) p2;
end/- 号代表函数类型
“” 代表类方法不需要实例就可以调用与C 的静态函数相似这类方法是可以直接用类名来调用的
“-” 是一般的实例方法必须使用这个类的实例才可以调用它
- (void) setColorToRed: (float)red Green: (float)green Blue:(float)blue; /* 宣告方法*/
[myColor setColorToRed: 1.0 Green: 0.8 Blue: 0.2]; /* 呼叫方法*/声明区域
implementation
implementation MyObject {int memberVar3; //私有
}
(return_type) class_method {.... //method implementation
}
-(return_type) instance_method1 {....
}
-(return_type) instance_method3: (int) p1 andPar: (int) p2 {....
}
end与Interface区别——访问权限看不懂可以看下图清楚明白
Interface区块内的实体变量默认权限为protectedimplementation 区块的实体变量则默认为private。
在Implementation区块定义私有成员更匹配面向对象之封装原则因为如此类别之私有信息就不需曝露于公开interface.h文件中。
封装权限 private当前类访问权限成员变量只能在当前类的内部访问。在类的实现部分定义的成员变量默认是private。 package相同映像访问权限如果类中的成员变量用package访问控制符来限制则这个成员变量可以在当前类以及当前类的同一个映像的任意地方访问。 所谓的统一映像指的是编译后生成的同一个框架或同一个执行文件编译器可以将一些类编译成一个框架库那么这个库中的类之间可以互相直接访问package修饰的成员变量。 protected子类访问权限如果类中的成员变量用protected访问控制符来限制则这个成员变量可以在当前类、当前类的子类的任意地方访问。在类的接口部分定义的成员变量默认是protected public公共访问权限如果类中的成员变量用public访问控制符来限制则这个成员变量可以在任何地方进行访问 interface声明类implementation定义类
创建对象
alloc分配内存init初始化若要自己定义初始化可重写init方法类似构造函数
MyObject * my [[MyObject alloc] init];
//若创建对象不需要参数则可直接使用new
MyObject * my [MyObject new];方法
方法声明上面提过主要是用加号和减号表示类方法和实例方法后面跟着参数
方法调用主要就是“[ ]”[]之间可以嵌套
属性
基本的定义使用关键字property编译选项紧跟着类型信息和属性的名字
property (nonatomic, strong) NSMutableArray *items;不多说直接看这篇博客Objective-C属性(property)的特性(attribute)-腾讯云开发者社区-腾讯云
属性的特性经典永流传的图 1.原子性Atomicity
atomic(默认值)
nonatomic
存取特性Access
readwrite(默认值)–读写
readonly–只读
3.内存管理特性Storage
管理对象生命周期
strong、weak、assign、copy深拷贝
协议
protocol作为区块起始end结束中间为方法列表
protocol Locking
- (void)lock;
- (void)unlock;
end注类遵守协议的写法与swift也不一样
interface SomeClass : SomeSuperClass Locking
end转发
Objective-C 入门教程 | 菜鸟教程
闭包
因为闭包可能会导致循环引用所以一般用weak弱引用之前一直都基于知道这个点的层面今天真的是看到了这方面代码一下子结合起来了
我们知道死锁就是两个进程或线程之间互相持有对方资源且不释放所以就会导致死锁
循环引用比较相似我们一般使用weak弱引用对self进行引用避免引用计数1导致循环饮用
代码例子如下
iOS-Block 中 为何使用 weakSelf 和 strongSelf - 掘金
闭包的简单使用
myBlock ^(int a, int b)
{//coding
};