零碎的Objective-C知识 (三)
2016-10-13 10:48
155 查看
零碎的Objective-C知识 (一)
零碎的Objective-C知识 (二)
代码块
1.两个nsstring * 类型的地址变量相比较,==表示直接比较的地址值,而isequalto表示比较这两个地址直接指向的变量的值(用于比较两个字符串的字符序列是否相等)
NSString * str1 = [[NSString alloc]initWithFormat:@"你好”]; NSString * str2 = @"你好"; NSString * str3 = @"你好"; NSString * str4 = [[NSString alloc]initWithFormat:@"你好”];
第一行和第四行地址值不等,因为他们是系统分别单独创建的
第二行和第三行地址值相等,因为他们两个地址指向同一个变量
输出的地址值分别为:0x10020a110
0x100001040
0x100001040
0x10020a450
全部代码:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString * str1 = [[NSString alloc]initWithFormat:@"你好"]; NSString * str2 = @"你好"; NSString * str3 = @"你好"; NSString * str4 = [[NSString alloc]initWithFormat:@"你好"]; NSLog(@"%p",str1); NSLog(@"%p",str2); NSLog(@"%p",str3); NSLog(@"%p",str4); NSLog(@"%@",str1); NSLog(@"%@",str2); NSLog(@"%d",str1==str2); NSLog(@"%d",[str1 isEqualToString:str2]); NSLog(@"%d",[str1 isEqualToString:str4]); int a = 65; char ch = 'A'; NSLog(@"%d",a==ch); } }
实验结果:
0x10020a110
0x100001040
0x100001040
0x10020a450
你好
你好
0
1
1
1
2.类别:
@interface 已有类 (类别名)//方法定义
@end
定义类别的语法和定义类的语法区别
1.定义类时使用的类必须是该项目中没有的类,而定义类别时使用的类名必须是已有的类
2.定义类别时必须用圆括号来包含类名
3.类别中通常只定义方法
类别实现语法
@implementation 已有类(类别名)
//方法实现
@end
就编程习惯来讲,一般将类别的接口文件命名为“类名+类别名.h”的形式,实现文件命名为“类名+类别名.m”的形式
扩展:
@interface 已有类(){
实例变量
}
//方法定义
@end
在定义类的扩展时,,可以额外增加实例变量,也可以使用@property来合成属性,(括setter,getter方法和对应的成员变量),但是,定义类的类别时,不允许额外定义实例变量,也不能用@property合成属性
实际上,拓展就是拓展一个.h文件而已,里面写上属性的声明或者方法,然后再原有的.m文件里面引用扩展的.h文件就可以了,扩展生成的.m文件可以注解掉里面的代码就可以了,最后在主函数里面导入拓展的.h文件即可
3.通过performSelect方法类调用私有方法
4.协议
OC中协议的作用就相当于其他语言中的接口的作用协议通常是定义一组公用方法,但不会为这些方法提供实现,方法的实现交给类去完成
类别可以实现非正式协议
正式协议使用@protocol关键字
格式:
@protocol 协议名<父协议1,父协议2> { 零到多个方法定义 }
协议只能继承协议,不能继承类
协议中定义的方法只有方法签名,没有方法实现,协议中所有的方法可以是类方法也可以是实例方法
协议里的方法都具有公开的访问权限
遵守(实现)协议格式:
@interface 类名 :父类<协议1,协议2>
5.大量用宏会导致二进制文件变大
6.Subview这个属性是用来获取父控件中的所有子控件的ViewWithtag可以包括父控件,并且可以递归遍历所有的子控件(xib或者storyboard中设定控件的tag值)
7.Command + shift +K,清空缓存,一般常用于托线警告
相关文章推荐
- 零碎的Objective-C知识 (一)
- 零碎的知识笔记(1)
- 黑马程序员--Objective-C语言基础知识--特有语法
- 黑马程序员--Objective-C语言基础知识--Foundation框架的常见用法
- 光通信零碎知识
- Android零碎知识之Style and Theme
- Unity零碎小知识
- 黑马程序员-- 一些零碎的知识
- objective-c 知识整理
- struts2中一些零碎的边角知识
- Objective-C 类的基础知识
- python零碎知识(8)--文件和流
- VBA一些零碎知识
- iOS零碎小知识
- Objective-C基础知识点
- 一些零碎的知识
- Objective-C基础知识
- Objective-C 零散知识笔记 by STP
- Android屏幕适配之零碎知识
- C/C++零碎知识整理