【iOS Programming: The Big Nerd Ranch Guide】【笔记】2

ARC内存管理

栈用于存储方法的局部变量

堆用于存储对象

ARC Automatic Reference Counting 自动引用计数

弱应用(weak reference)用于避免循环引用导致的内存释放不了的问题

@property

属性的名称是成员变量的名称去掉下划线,申明了属性后会自动在编译期生成带下划线的成员变量和相应的setter、getter方法

@property的属性

读写属性

readonly(只读)  只生成getter

readwrite(读写)  生成setter和getter

内存属性

strong  强引用

weak   弱引用

copy    对象拷贝 多用于 NSString NSMutableString NSArray NSMutableArray

为了避免其他操作对该对象的影响

assign   基础类型变量

注意:如果覆写(override)了一个属性setter和getter方法,编译器就不会自动生成相应的成员变量,需要开发者自己声明

@synthesize age = _age;

@synthesize age;  OR @synthesize age = age; 只生成setter、getter方法,不生成成员变量

Autorelease

主要用于生成对象并返回的类方法中

比如:

+ (BNRItem *)someItem

{

BNRItem *item = [[[BNRItem alloc] init] autorelease];

return item;

}

@autoreleasepool{} 当这个方法块运行结束,所有对象将会被引用计数-1

View

一个view是UIView的实例或者是它的子类

view可以绘制自己

view可以响应触摸等事件

view存在于一个view树,这个树的根节点是应用的window对象

为了避免循环引用,属性superview都是弱应用

CGRect中的参数的单位都是“点”而不是像素,这样就不用考虑适配不同分辨率的问题

在视网膜屏幕上,一个点代表四个像素(2x2),普通屏幕上一个点就表示一个像素

UIView的frame和bounds的区别

bounds是view的内部坐标系,frame代表本身在superview坐标系的信息

在头文件和实现文件(*.m)中声明属相的区别

在头文件中声明的属性和方法对外部是可见的,在实现文件中声明的对外部不可见

ViewController

一个ViewController的view只有在需要显示在屏幕上时才会创建,这个中懒加载的方式可以节约内存提高性能

ViewController有两种方法创建它的视图树:

1.在代码中覆写UIViewController的loadView方法

2.在Interface Builder中创建NIB文件

当一个ViewController创建后他的view属性是为nil的,这时就会调用loadView方法

- (BOOL)application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中调用UIView的setRootViewController方法设置一个rootViewController,并且加载其view添加到window中,并且自动设置该view的大小和window的大小一致

viewDidLoad只会在ViewController的生命周期中调用一次,viewWillAppear每次重新出现在屏幕都会回调

ViewController生命周期

http://blog.csdn.net/ryantang03/article/details/8264072

KVC (key-value coding)

- (id)valueForKey:(NSString *)k;
- (void)setValue:(id)v forKey:(NSString *)k;

时间: 2024-10-10 04:36:58

【iOS Programming: The Big Nerd Ranch Guide】【笔记】2的相关文章

iOS Programming The Big Nerd Ranch Guide (4th Edition)

Book Description Updated and expanded to cover iOS 7 and Xcode 5, iOS Programming: The Big Nerd Ranch Guide leads you through the essential concepts, tools, and techniques for developing iOS applications. After completing this book, you will have the

Objective-C Programming The Big Nerd Ranch Guide 笔记 19-37

Properties are either atomic or nonatomic, The difference has to do with multithreading. atomic is the default value. Properties are either readonly or readwrite. readwrite is the default value. Whenever you declare a property that points to an NSStr

【iOS Programming: The Big Nerd Ranch Guide】【笔记】1

1.在类中的init的方法里,应该使用_value而不用self.value的形式访问变量,因为初始化正在进行中,对象还没有完成构造,所以不能确定实例变量都能有效的赋值 2.首先特定的init初始化方法需要调用父类的特定init方法,然后其他的init方法都调用这个特定的init方法 如果子类声明的特定init方法和父类的特定init方法不一样,就需要子类覆写(override)父类的特定init方法并调用子类已有的特定init方法 3.在类方法里应该使用self来代替类名,使得他的子类也可以同

Android Programming The Big Nerd Ranch Guide

在Android Programming The Big Nerd Ranch Guide书中,讲解上下文菜单的实现,添加一个删除菜单.在Honeycomb发布前的设备里,上下文的action都是以悬浮的上下文菜单形式呈现.在之后的设备里,推荐用上下文的action bar的方式去呈现上下文的act... http://guju.com.cn/products/155904 http://guju.com.cn/products/155903 http://guju.com.cn/product

上下文菜单和Contextual Action Mode(学习Android Programming The Big Nerd Ranch Guide)

在Android Programming The Big Nerd Ranch Guide书中,讲解上下文菜单的实现,添加一个删除菜单. 在Honeycomb发布前的设备里,上下文的action都是以悬浮的上下文菜单形式呈现.在之后的设备里,推荐用上下文的action bar的方式去呈现上下文的action.上下文的action bar展现在一个activity的顶部. 运行在Honeycomb之前版本的程序,有些也会出现上下文action bar.那是因为它使用了第三方库,这个库名字是Acti

《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习

本书第12章是讲解Dialog.12.4挑战练习是在CriminalIntent项目中,再增加一个TimePickerFragment的对话框fragment.通过在CrimeFragment用户界面上添加的时间按钮,弹出TimePickerFragment界面,允许用户使用TimePicker组件选择crime发生的具体时间. 我的修改思路是: 按照DatePickerFragment实现的步骤.方法实现实现TimePickerFragment: crime日期与时间是一个整体: DatePi

iOS Programming UIWebView 2

iOS Programming? UIWebView 1 Instances of UIWebView render web content. UIWebView可以显示web content. In fact, the Safari application on your device uses a UIWebView to render its web content. 事实上,Safari application 用了一个UIWebView 显示它的web content. In this

iOS Programming Views :Redrawing and UIScrollView

iOS Programming Views :Redrawing and UIScrollView? 1.1 event? You are going to see how views are redrawn in response to an event. 你将看到view如何响应event的. You declared properties in header files. You can also declare properties in class extensions. 你可以声明属

《Programming in Lua 3》读书笔记(二十二)

日期:2014.8.6 PartⅣ The C API 26 Extending Your Application 使用Lua很重要的一点是用来做配置语言.配合主语言做一些功能的配置. 26.1 The Basics 有的时候程序需要配置一些功能信息,很多时候可能有许多别的方法比用lua做配置要更简单:如使用环境变量或者读取文件,读取文件涉及到文件的解析.如果使用Lua进行配置的话,相当于用lua文件替代了要读取的如csv.txt文件等. 使用Lua进行配置的时候,就需要使用Lua API去控制