如何判断当前App是否允许使用系统定位功能

如题解答:利用CLLocationManager的一个类方法

1
2
3
4
+ (CLAuthorizationStatus)authorizationStatus
// CLAuthorizationStatus是一个枚举值:
typedef enum {
    kCLAuthorizationStatusN[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2015/03/09/113353383.html">继续阅读</a></p>

模拟iOS自带照片读取器,自定义照片浏览器

1、效果示意图:

IMG_0893

2、使用方法
2.1、创建一个导航控制器
2.2、设置照片所在目录
2.3、设置接收返回的图片路径

1
2
3
4
5
6
7
NSString *path = [[SACache imageCachesFolder] stringByAppendingPathComponent:@"20150226"];
SAImagePickViewCtrl *imagePick = [[SAImagePickViewCtrl alloc] initWithFoldPath:path];
imagePick.resultBlock = ^(NSString *result){
????// 选中照片后执行
};
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:imagePick];
[self presentViewController:nav animated:YES completion:nil];

3、代码参考[……]

继续阅读

UITextField设置内边距的三种方式

1、利用UITextField的属性leftView,创建一个宽为5,高为20的View设置为UITextField的leftView,这样视觉上就会有5像素的左边距

1
UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0,[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2015/01/07/094706395.html">继续阅读</a></p>

2、MAC OS中以及iOS7.0以前可以使用如下方法设置

1
[self.yourTextField se[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2015/01/07/094706395.html">继续阅读</a></p>

atomic与nonatomic,assign,copy与retain的定义和区别

atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。

? ?? ???atomic

? ?? ?? ?? ?? ? 设置成员变量的@property属性时,默认为atomic,提供多线程安全。

? ?? ?? ?? ?? ? 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。加了atomic,setter函数会变成下面这样:
? ?? ?? ?? ?? ?? ?? ?? ?{lock}
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???if (property != newValue) {
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? [property release];
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? property = [newValue retain];
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???}
? ?? ?? ?? ?? ?? ?? ?? ?{unlock}

? ?? ???nonatomic

? ?? ???禁止多线程,变量保护,提高性能。

? ?? ???atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。[……]

继续阅读