nsstring

Setting variables in a different class in Cocoa

痞子三分冷 提交于 2020-02-08 04:17:52
问题 I'm trying to learn how to set variables for different classes using one main data class. Here's a diagram of of what I would like to do and the code from my project: ClassA #import <Foundation/Foundation.h> @interface ClassA : NSObject { NSString *stringA; NSString *stringB; } @property (nonatomic, copy) NSString *stringA; @property (nonatomic, copy) NSString *stringB; @property (weak) IBOutlet NSTextField *textA; @property (weak) IBOutlet NSTextField *textB; - (IBAction)displayStrings:(id

Setting variables in a different class in Cocoa

一笑奈何 提交于 2020-02-08 04:17:47
问题 I'm trying to learn how to set variables for different classes using one main data class. Here's a diagram of of what I would like to do and the code from my project: ClassA #import <Foundation/Foundation.h> @interface ClassA : NSObject { NSString *stringA; NSString *stringB; } @property (nonatomic, copy) NSString *stringA; @property (nonatomic, copy) NSString *stringB; @property (weak) IBOutlet NSTextField *textA; @property (weak) IBOutlet NSTextField *textB; - (IBAction)displayStrings:(id

iOS 面试全方位剖析 -- Block篇

余生长醉 提交于 2020-02-06 01:52:54
1.Block的本意 block本质上也是一个OC对象,它内部也有个isa指针, block是封装了函数调用以及函数调用环境的OC对象, block是封装函数及其上下文的OC对象 2.block截获变量 #import "SYDBlcok.h" // 全局变量----不截获全局变量 int global_var = 4; // 静态全局变量-----不截获全局静态变量 static int static_global_var = 5; @implementation SYDBlcok -(void)method { // 基本数据类型的局部变量----只截获值 int var = 6; // 对象类型的局部变量----连同所有修饰符一起截获 __unsafe_unretained id unsafe_ibject = nil; __strong id strong_obj = nil; // 局部静态变量---以指针形式截获局部静态变量 static int multiplier_static = 3; NSLog(@"multiplier_static:%d",multiplier_static); int(^Block)(int) = ^(int num) { NSLog(@"局部变量>基本数据类型:%d",var); NSLog(@"局部变量>对象类型%@----strong

iOS开发项目实战狗粮

為{幸葍}努か 提交于 2020-02-05 14:35:41
touchesBegan开始编写一个应用代码前,首先应该列出事物清单(了解需要做什么) 从代码可移植性的角度来看,纯手写代码 > xib界面文件 > storyboard 从代码复杂度的角度来看,storyboard > xib 界面文件 > 纯手写代码 弹出提示框 [UIAlertView alloc]initWithTitle iOS 8 建议使用 UIAlertController http://blog.csdn.net/lengshengren/article/details/39896037 改变UIAlertController的标题、内容的字体和颜色 http://www.jianshu.com/p/51949eec2e9c [UIView appearance].tintColor = [UIColor colorWithHexString:DSBlackColor]; 可以统一修改按钮字体颜色。 分享功能实现: UIActivityViewController http://www.cocoachina.com/industry/20140425/8233.html 简单的系统 Loading效果 UIActivityIndicatorView http://www.cnblogs.com/androidwsjisji/archive/2013/04/09

iOS-iphone网络编程总结

百般思念 提交于 2020-02-04 19:25:08
iphone网络编程总结 一:确认网络环境 3G/WIFI 1. 添加源文件和 framework 开发 Web 等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过 Apple 的审 ( 我们的 ) 查的。 Apple 的 例程 Reachability 中介绍了取得 / 检测网络状态的方法。要在应用程序程序中使用 Reachability ,首先要完成如下两部: 1.1. 添加源文件: 在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中。如下图: 1.2. 添加 framework : 将 SystemConfiguration.framework 添加进工程。如下图: 2. 网络状态 Reachability.h 中定义了三种网络状态: typedef enum { NotReachable = 0, // 无连接 ReachableViaWiFi, // 使用 3G/GPRS 网络 ReachableViaWWAN // 使用 WiFi 网络 } NetworkStatus; 因此可以这样检查网络状态: Reachability *r = [Reachability reachabilityWithHostName:@“ www.apple.com ”

ARC专题:Xcode 4.2 中的Automatic Reference Counting (ARC)转

橙三吉。 提交于 2020-02-04 00:28:27
Automatic Reference Counting (ARC), 自动引用计数,是开发 Cocoa 程序时的一个编译级别的特性,用于自动内存管理。 在 XCode 4.2 中,使用模板新建一个工程,该工程将使用 ARC 特性。 如果你的 iOS SDK 是 iOS5 seed release 2 ,需要做如下修改,才能避免编译时的错误: ● 在 System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h 中 , 将 : CFTypeRef CFMakeCollectable(CFTypeRef cf) CF_AUTOMATED_REFCOUNT_UNAVAILABLE; 修改成 : CFTypeRef CFMakeCollectable(CFTypeRef cf); ● 在 System/Library/Frameworks/Foundation.framework/Headers/NSObject.h 中 , 将 : return (__bridge_retain CFTypeRef)X; 修改成: return (__bridge_retained CFTypeRef)X; 使用 ARC 将让你远离 烦人且容易遗漏的 retain , release 和 autorelease 等操作。 ARC

Runtime-iOS运行时应用篇

你离开我真会死。 提交于 2020-02-04 00:16:10
一、动态方法交换:Method Swizzling 实现动态方法交换(Method Swizzling )是Runtime中最具盛名的应用场景,其原理是:通过Runtime获取到方法实现的地址,进而动态交换两个方法的功能。使用到关键方法如下: //获取类方法的Mthod Method _Nullable class_getClassMethod(Class _Nullable cls, SEL _Nonnull name) //获取实例对象方法的Mthod Method _Nullable class_getInstanceMethod(Class _Nullable cls, SEL _Nonnull name) //交换两个方法的实现 void method_exchangeImplementations(Method _Nonnull m1, Method _Nonnull m2) 1.动态方法交换示例 现在演示一个代码示例:在视图控制中,定义两个实例方法printA与printB,然后执行交换 - (void)printA{ NSLog(@"打印A......"); } - (void)printB{ NSLog(@"打印B......"); } //交换方法的实现,并测试打印 Method methodA = class_getInstanceMethod([self

KVC

纵饮孤独 提交于 2020-02-02 19:11:50
Key-Value coding 键值编码 允许开发者通过Key直接访问对象的属性,或给对象的属性赋值 就可以在运行时动态的访问和修改对象的属性,而不是编译时 KVC设值 KVC取值 KVC使用keyPath KVC处理异常 KVC处理数值和结构体类型属性 KVC键值验证(Key-Value Validation) KVC处理集合 KVC处理字典 KVC设值 KVC取值 KVC使用keyPath 这里举个例子: @interface Test1 : NSObject { NSString * _name ; } @end -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- @interface Test : NSObject { Test1 * _test1 ; } @end int main ( int argc , const char * argv [ ] ) { @ autoreleasepool { Test * test = [ [ Test alloc ] init ] ; //Test生成对象 Test1 * test1 = [ [ Test1 alloc ] init ] ; //Test1生成对象 [ test setValue : test1 forKey : @"test1" ] ; /

KVO

浪尽此生 提交于 2020-02-02 17:32:46
通知和代理: 通知:一对多(随处可发通知,随处可以接收通知) 优点:发送者和接受者都不需要知道对方是谁 缺点:发送方没有办法接受到反馈值 代理:一对一(一触发通知,即刻接收) 优点:支持的类有详尽的信息 缺点:必须支持委托 KVO 概述 Key-Value Observing,键值观察,观察者模式的衍生 对目标对象的某属性添加观察,当属性发生变化时,通过触发观察者对象实现的接口方法,自动通知观察者 较完美的将目标对象和观察者对象进行解耦 KVO的定义是对NSObject的扩展所实现,所以, 继承自NSObject的类 ,都能使用KVO 过程 注册观察者 监听回调 移出监听 注册 - ( void ) addObserver : ( NSObject * ) observer forKeyPath : ( NSString * ) keyPath options : ( NSKeyValueObservingOptions ) options context : ( nullable void * ) context ; observer:观察者 keyPath:所观察的属性 options:属性配置 context:上下文 options NSKeyValueObservingOptionNew:change字典包括改变后的值

iOS NSString 截取字符串

怎甘沉沦 提交于 2020-02-02 08:25:45
1. rangeOfString:截取指定字符串的长度; 2. substringToIndex:7:截取从0 索引到指定索引(7)长度的字符串 3. substringFromIndex:9:截取从指定索引(9)到末尾长度的字符串 4. NSRange range = NSMakeRange(0,7);截取从指定索引(0)到指定(7)长度的字符串 5. substringWithRange:range:截取从指定索引(0)到指定(7)长度的字符串 6. isEqualToString:@"p://www":比较字符串包含关系,区分大小写 7. stringWithFormat:格式化字符串。 void findSubString(){ NSString *filename = @"config.ini"; NSString *escapedPath = @"/Users/config.ini"; //在escapedPath中查找filename //NSRange iStart = [escapedPath rangeOfString :filename]; NSRange iStart = [escapedPath rangeOfString: filename options:NSCaseInsensitiveSearch]; // NSLog(@"iStart