Daily Archives: 2015年1月6日

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是一个非常好的选择。[……]

继续阅读

如何代码实现跳转safari,phone或message?

在相应的代码中写入:
1、调用 电话phone

1
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://4008008288"]];

2、调用自带 浏览器 safari

1
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.abt.com"]];

3、调用 自带mail

1
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@abt.com"]];

4、调用 SMS

1
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];

5,跳转到系统设置相关界面

1
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];

其中,发短信,发Email的功能只能填写要发送的地址或号码,无法初始化发送内容,如果想实现内容的话,还需要更复杂一些,实现其各自的委托方法。
若需要传递内容可以做如下操作:
加入:MessageUI.framework

1
#import <MessageUI/MFMessageComposeViewController.h>

实现代理:MFMessageComposeViewControllerDelegate[……]

继续阅读

如何给UINavigationBar 设置背景颜色或是自定义图片

在项目中添加如下代码:

1
2
3
//设置背景颜色:
UIColor *itemcolor = [UIColor colorWithRed:100.0f/255.0f green:176.0f/255.0f blue:0.0f/255.0f alpha:0.3f];
self.navigationContro[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2015/01/06/114550403.html">继续阅读</a></p>