KVC & KVO使用
标签(空格分隔): iOS学习
KVC 基础
KVC是KeyValue Coding的简称,它是一种可以直接通过字符串的名字(key)来间接访问对象的属性的机制。而不是通过调用Setter、Getter方法访问。 KVO是基于KVC实现的关键技术之一。
标签(空格分隔): iOS学习
KVC是KeyValue Coding的简称,它是一种可以直接通过字符串的名字(key)来间接访问对象的属性的机制。而不是通过调用Setter、Getter方法访问。 KVO是基于KVC实现的关键技术之一。
如何修改UITextField中placeholder的字体和颜色。
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 20)];
textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"i am placeholder."
attributes:@{NSForegroundColorAttributeName : [UIColor redColor],
NSFontAttributeName : [UIFont systemFontOfSize:6]
}];
[self.view addSubview:textField];
NSPredicate(谓词),是一个Foundation类,可以使用它指定数据被获取或者过滤的方式。它的查询语言就像SQL的WHERE和正则表达式的交叉类似,来定义一个集合被搜寻的逻辑条件。
Foundation中提供了使用NSPredicate
来过滤NSArray/NSMutableArray&NSSet/NSMutableSet
的方法。
不可变的集合,NSArray&NSSet
,有可以通过评估接收到的predicate来返回一个不可变集合的方法filteredArrayUsingPredicate:
和filteredSetUsingPredicate:。
可变集合,NSMutableArray&NSMutableSet
,可以使用方法filterUsingPredicate:
,它可以通过运行接收到的谓词来移除评估结果为FALSE的对象。
NSArray *array = @[@"jim",@"cook",@"jobs",@"sdevm"];
NSPredicate *preLength = [NSPredicate predicateWithFormat:@"length > 3"];
NSLog(@"array = %@",array);
NSLog(@"array precidate=%@",[array filteredArrayUsingPredicate:preLength]);
NSMutableArray *muArray = [NSMutableArray arrayWithObjects:@"jim",@"cook",@"jobs",@"sdevm", nil];
[muArray filterUsingPredicate:preLength];
NSLog(@"muArray=%@",muArray);
iOS7之后,在使用UITableView的时候,UITableViewCell左侧会有默认15像素的空白。即separatorLine 不能顶到最左边.如下图所示:
这里记录一下解决方案。
用一张图来解释:
block
是Objective-c
语言对闭包的实现:
闭包是一个函数(或指向函数的指针),再加上该函数执行的外部的上下文变量(有时候也称作自由变量)。
先看看文档给的注释:
Creates the view that the controller manages.You should never call this method directly.
The view controller calls this method when its view property is requested but is currently nil. This method loads or creates a view and assigns it to the view property.If the view controller has an associated nib file, this method loads the view from the nib file. A view controller has an associated nib file if the nibName property returns a non-nil value, which occurs if the view controller was instantiated from a storyboard, if you explicitly assigned it a nib file using the initWithNibName:bundle: method, or if iOS finds a nib file in the app bundle with a name based on the view controller's class name.
If the view controller does not have an associated nib file, this method creates a plain UIView object instead.If you use Interface Builder to create your views and initialize the view controller, you must not override this method.You can override this method in order to create your views manually. If you choose to do so, assign the root view of your view hierarchy to the view property.
The views you create should be unique instances and should not be shared with any other view controller object. Your custom implementation of this method should not call super.
If you want to perform any additional initialization of your views, do so in the viewDidLoad method.
以前在学校写项目都是用的ARC,来到公司发现都是用MRC写代码。发现自己内存管理这一块比较薄弱,这里总结一下。
相关文章链接:
Properties相关介绍
Memory Management
iPhone开发之深入浅出(1)-ARC是什么
在Objective-c里面使用property教程
iPhone开发之深入浅出 (3) — ARC之前世今生
对象生成的时候必定被某个持有者拿着,如果有多个持有者的话,其引用计数就会递增;相反失去一个持有者那么引用计数即会递减,直到失去所有的持有者,才真正地从内测中释放自己。
标签(空格分隔): UI设计
带边框的图片如果实用常规的缩放,边框部分会按照缩放比例拉伸或者压缩,会导致图片变形。 例如下面这样:
我们有这样一张图片:
.
我们将一个button的背景设置为这张图片,代码如下: