打开Terminal,点击xcode-select --install来安装command line tools
4种基本数据类型,int,float,double,char
BOOL类型由预处理器添加的,还有YES, NO这两个是内置值。
@class指令告诉编译器,这是一个类,而不会包含相关头文件,在实现文件里面,就需要包含头文件了,因为编译器需要知道更多信息。
-(BOOL) respondsToSelector: selector 对象能响应selector表示的方法吗?
+(BOOL) instancesRespondToSelector: selector 某个类的实例能响应selector表示的方法吗?
安装homebrew:
1. 先下载XCode,因为命令行工具在安装homebrew的时候要用到
2. 安装了XCode之后,通过命令xcode-select --install 安装命令行工具
3.
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
先下载homebrew,再安装
4. 安装完成后brew help查看帮助
5. 立即使用brew doctor查看系统应用程序的安装问题,是否有的过期了等等。
objective-c的category和extension区别
匿名的category就是extension,可以添加实例变量和属性,但是在命名的category里面不能添加实例变量和属性。
extension里面的方法是私有的
category会覆盖该类的方法,如果同名,可能再也不能调用原来的方法了,而且category会影响派生。总之,使用category要小心。
id <Drawing> currentObject;
这句告诉编译器,currentObject引用的变量实现了Drawing这个协议,这么看来,objective-C中的协议相当与c#的接口概念。
协议也可以扩展,像这样:
@protocol Drawing3D <Drawing>
informal protocol就是不需要实现的category,在OC2.0中可以由@Optional指令代替。
如果使用removeObject从一个数组中删除对象,系统会自动对数组中的每一个对象触发isEqual方法,可以重载这个方法。
使用Block来比较两个对象,这种方法的优点是你不需要写selector,单独写个方法,而是直接就在代码里面写比较的代码,这优点像c#的lamda匿名函数。
NSDictionary也可以由一系列的key/object对进行初始化,语法是
@{ key1:object1, key2:object2, ..., keyn:objectn }
检查是否安装ios sdk:
xcodebuild -showsdks
self, 在一个方法中,self是一个隐含的局部变量,不需要声明它,self自动指向接收消息的对象。
self用来发消息给它本身。
在类方法中也可以使用self,这时候它指的就是类本身。
在objective-c中,返回一个自身类型对象的类方法叫做方便方法,convenience methods,就像NSString类的
stringWithFormat这样的。
每个对象都有一个实例变量叫做isa
当一个属性是一个指针,类型是那种含有mutable子类型的,这种属性应该用copy来修饰。
copy方法返回一个immutable NSString对象,这个对象具有和original字符串相同的值。
对subview进行额外的初始化,两个方法,一个是在viewDidLoad,这个只会运行一次;还有一个是viewWillAppear,viewController的方法,在每次出现在屏幕上都会调用。
不同viewcontroller之间通过segue传递数据,这个是有效的
first responder类似于windows下的焦点概念,focus
属性观察者
didSet
前往某个目录:
Command + Shift + G
guard let
1>guard let
和if let
刚好相反,guard let
守护一定有值。如果没有,直接返回。
2> 通常判断是否有值之后,会做具体的逻辑实现,通常代码多
添加一个属性观察者property observer
property injection
trailing closure
尾随必报
awakeFromNib
if case let
guard case let
If a closure is passed as an argument to a function and it is invoked after the function returns, the closure is escaping.
try? 如果由异常跑出,返回nil
try?会将错误转换为可选值,当调用try?+函数或方法语句时候,如果函数或方法抛出错误,程序不会发崩溃,而返回一个nil,如果没有抛出错误则返回可选值。
显示所有hidden文件:
defaults write com.apple.finder AppleShowAllFiles YES
隐藏:
defaults write com.apple.finder AppleShowAllFiles NO
在objective-c中,不需要检查对象指针是否为nil,因为对nil对象方法的调用仅仅被忽略,而不会抛出异常,不会导致程序crash。
NSLog打印任何类型的变量,格式字符串%@
objective-c保留了c语言的关键字,除此之外的关键字都有@前缀
对于一个有Mutable子类的类对象指针,例如NSString*, 申明属性的时候,需要copy来修饰。
一英寸72个点
动画效果:170页,还没有看