Tag Archives: 基础知识

如何判断当前iPhone的机型,iPhone代号对应关系

不多说,直接上代码,拿去用即可!!别问我是怎么知道,如果你有这么多手机的话你也可以去测。

1
2
3
4
5
+ (NSString *)deviceString
{
????struct utsname systemInfo;
????uname(&systemInfo);
????NSString *device[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2015/04/07/161807355.html">继续阅读</a></p>

如何判断当前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>

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[……]

继续阅读