Object-c

手把手教你ARC

孤街浪徒 提交于 2020-10-29 17:15:25
手把手教你ARC——iOS/Mac开发ARC入门和使用 Revolution of Objective-c 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论。请不要将本文的部分或全部内容用于商用,谢谢合作。 欢迎转载本文,但是转载请注明本文出处: http://www.onevcat.com/2012/06/arc-hand-by-hand/ 本文适合人群:对iOS开发有一定基础,熟悉iOS开发中内存管理的Reference Counting机制,对ARC机制有听闻很向往但是一直由于种种原因没有使用的童鞋。本文将从ARC机理入手对这个解放广大iOS开发者的伟大机制进行一个剖析,并逐步引导你开始使用ARC。一旦习惯ARC,你一定会被它的简洁高效所征服。 写在开头 虽然距离WWDC2011和iOS 5已经快一年时间,但是很多开发者并没有利用新方法来提高自己的水平,这点在ARC的使用上非常明显(特别是国内,基本很少见到同行转向ARC)。我曾经询问过一些同行为什么不转向使用ARC,很多人的回答是担心内存管理不受自己控制..其实我个人认为这是对于ARC机制了解不足从而不自信,所导致的对新事物的恐惧。而作为最需要“追赶时髦”的职业,这样的心态将相当不利。谨以此文希望能清楚表述ARC的机理和用法,也希望能够成为现在中文入门教学缺失的补充。

Smobiler如何实现.net一键开发,ios和android跨平台运行

你离开我真会死。 提交于 2020-03-30 15:21:41
目录 一 概述 二 原理 移动端控件 移动端API 三 写在最后 一. 概述 Smobiler实现了.net服务端开发,ios和android客户端直接运行显示,无需学习Objective-C或Java,一次开发搞定iOS和Android两大平台. 框架底层的通讯使用的是C++的,保证了通讯的安全性,并实现和动态部署的功能,在app快速迭代的时代,通过Smobiler开发的App,只需要修改服务端,即可实现客户端的实时更新,不需要重新打包发版. 二. 原理 接下来,将从原理上谈谈Smobiler如何实现此功能的. 并分别针对iOS和Android讲解. 控件 Designer上提供了很多基础控件,像Panel,Button,Image,Lable,TextBox,这些基础UI组件和原生应用完全一致,实际上,在客户端,这些控件就是原生控件开发而成的,通过服务端控制其属性,传递给客户端配置. API Smobiler客户端使用原生开发方式,集成了手机硬件的大部分功能,服务端只需要通过简单的API调用即可实现对手机硬件功能的使用.而第三方插件的方式,也给有能力的用户开发自己需要的原生功能带来了可能. 移动端控件 在做iOS和Android的跨平台功能中,控件都是原生的,通过加密的自有协议Render,创建丰富的原生UI库,让Smobiler用户感受和原生应用一致的用户体验.

object-c 一些用法(转)

时光毁灭记忆、已成空白 提交于 2020-03-06 14:25:26
1. 设置实例变量值的方法通常称为设置函数 setter, 而用于检索实例变量值的方法叫做获取函数 getter.getter 一般为变量名 , 而 setter 一般为 set+ 变量名 ( 第一个字母大写 ). 2. 合成存取器方法 : 在接口定义部分使用 @property 指令标识属性 , 然后在实现部分使用 @synthesize 指令即可 . eg: @property int sum; @synthesize sum; 3. 创建方法名时 , 参数名实际上是可选的 . 如 -( int ) set: ( int )n :( int ) d; 这个方法名为 : set::, 要调用这个方法如下 : [ aFraction set: 1 : 3 ]; 4. 静态变量声明仍为 static 关键字修饰 , 如 : static int hiCount=; 5. 有一个名为 new 的方法可以将 alloc 和 init 的操作结合起来 . eg: Fraction *myFraction = [Fraction new ]; 6. id 类型可以存任何的对象 , 而且对于返回值和参数类型来说 , id 是默认的类型 , 如下声名了一个返回为 id 类型的方法 . eg: -allocInit; 7. 承继时方法的调用 : 首先检查该对象所属的类 , 如果有指定名称的方法 ,

Object-C 中各数据类型转换 NSData转NSString,Byte,UIImage

浪子不回头ぞ 提交于 2020-03-04 07:26:02
1,NSData 与 NSString    NSData --> NSString    NSString *aString = [[NSString alloc] initWithData:adata encoding:NSUTF8StringEncoding];    NSString --> NSData    NSString *aString = @"1234";   NSData *aData = [aString dataUsingEncoding: NSUTF8StringEncoding]; 2,NSData 与 Byte    NSData --> Byte    NSString *testString = @"1234567890";   NSData *testData = [testString dataUsingEncoding: NSUTF8StringEncoding];   Byte *testByte = (Byte *)[testData bytes];    Byte --> NSData    Byte byte[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};   NSData *adata = [[NSData alloc]

iOS(CGGeometry)几何类方法总结

半城伤御伤魂 提交于 2020-03-01 02:44:58
iOS开发几何类方法总结 CGGeometry.h文件是用C语言实现的一个封装了许多常用几何方法的文件。 一、几个常用结构体 struct CGPoint { CGFloat x; CGFloat y; }; 定义一个点,设置x坐标和y坐标 struct CGSize { CGFloat width; CGFloat height; }; 定义一个尺寸,设置宽度和高度 struct CGVector { CGFloat dx; CGFloat dy; }; 定义一个二维矢量 struct CGRect { CGPoint origin; CGSize size; }; 定义一个矩形 二、几个系统定义的量 const CGPoint CGPointZero 零点,与 CGPointMake(0, 0) 等效 const CGSize CGSizeZero 零尺寸,与 CGSizeMake(0, 0) 等效 const CGRect CGRectZero 零矩形,与 CGRectMake(0, 0, 0, 0) 等效 const CGRect CGRectNull 空矩形,这个和零矩形并不相同,当我们返回两个不相交矩形的交集时,会返回空矩形。 const CGRect CGRectInfinite 无限的矩形 三、一些常用方法 CGPoint CGPointMake( CGFloat

IOS视图跳转(xcode9.1 Object-C)

陌路散爱 提交于 2020-02-21 18:12:10
首先新建一个ViewController,通过file->new file,选择Cocoa Touch Class,名字例如为TmpViewController, 基类为UIViewController,注意勾选xib,启动时要用到: 在主ViewController中添加一个按钮,通过按钮启动TmpViewController: - ( IBAction ) jump : ( id ) sender { NSLog ( @ "jump to new view" ) ; TmpViewController * tvc = [ [ TmpViewController alloc ] initWithNibName : @ "TmpViewController" bundle : nil ] ; [ self . navigationController pushViewController : tvc animated : YES ] ; //[self presentViewController:tvc animated:YES completion:nil]; } 我们可以发现,可以通过presentViewController 启动新的界面,但是却无法通过navigationController 来启动新页面,这是因为默认情况下

Object-c 中字符串与数组的处理

旧街凉风 提交于 2020-02-02 03:55:49
//一、NSString /*----------------创建字符串的方法----------------*/ //1、创建常量字符串。 NSString *astring = @"This is a String!"; //2、创建空字符串,给予赋值。 NSString *astring = [[NSString alloc] init]; astring = @"This is a String!"; [astring release]; NSLog(@"astring:%@",astring); //3、在以上方法中,提升速度:initWithString方法 NSString *astring = [[NSString alloc] initWithString:@"This is a String!"]; NSLog(@"astring:%@",astring); [astring release]; //4、用标准c创建字符串:initWithCString方法 char *Cstring = "This is a String!"; NSString *astring = [[NSString alloc] initWithCString:Cstring]; NSLog(@"astring:%@",astring); [astring release]; //5

object-c中反斜杠换行写字符串

会有一股神秘感。 提交于 2020-02-02 01:24:18
NSString *greeting = @"hello, object-c"; NSString *greeting2 = @"hello,\ object-c"; NSString *greeting3 = @"hello," " object-c"; NSLog(@"\n%@\n%@\n%@",greeting,greeting2,greeting3); //使用反斜杠换行写字符串的时候,输出会多出来一个制表符?输出结果如下 //hello, object-c //hello, object-c //hello, object-c 加反斜杠会输出多一段空白,不知为何 int age = 021; //开头为0表示是八进制,021的值为17 int weight = 0xaf8; //开头为0x表示是16进制,0xaf8的值为2808 NSLog(@"age = %d",age); NSLog(@"weight = %d",weight); char tab = '\t'; char newLine = '\n'; NSLog(@"hello,%cmy%cfriend",tab,newLine); 八进制和16进制的表示方法,以及用char类型储存制表符和换行符 来源: CSDN 作者: camel_4197 链接: https://blog.csdn.net/camel

Object-c @Property

和自甴很熟 提交于 2020-01-07 16:27:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> http://blog.csdn.net/dqjyong/article/details/7668601(原博客) 以下是对原博客的整理 导航: 读写属性:(readwrite/readonly)以及(getter=name)、(setter=name) setter语意:(assign/retain/copy) 原子性: (non)atomic 从OC 2.0开始,我们能让系统自动生成设置变量值的方法或获取变量值的方法,即系统会自动为我们生成setter/getter方法。 @property(attribution)Vartype Varname; Setter and Getter 提醒一下,采用@property与自定义setter和getter方式其实是等价的,但是编译器会优先查找自动的setter/getter方法,如果找不到,就会使用@property对应的属性。 @propert(nonatomic ,copy)NSString *name; 这条语句等价于: 完成setter方法为: -(void)setName:(NSString*)newName{ if(newName!=name){ [name release]; name=[newName copy]; } } 完成getter方法为

shareinstall-ios集成方法

耗尽温柔 提交于 2019-12-20 04:03:53
1、产品原理 精确的App安装来源与携带参数安装 :shareInstall的核心价值在于,帮助Android/iOS开发者通过shareInstall提供的sdk,精确的获取app每一次安装的分享(或推广)来源。原理如下:开发者在分享的h5页面上集成 shareInstall web sdk,发布分享链接时在url上动态的拼接任意的自定义参数(如推广渠道号,邀请码等等);当某一终端访问该h5页面时,shareinstall web sdk将同时确定该设备的个性化信息和采集自定义参数,上传至shareInstall服务器, 待用户通过该h5页面安装app后首次打开时(如当前设备已安装该app,将直接拉起该app并传递参数),使用shareInstall Android/iOS sdk从shareInstall服务器再取回暂存的自定义参数。 一键拉起功能:shareInstall通过标准的scheme、universal link 等技术,在app已安装的情况下,从各种浏览器(包括微信、QQ、新浪微博、钉钉等主流社交软件的内置浏览器)拉起app并传递自定义参数,避免重复安装,如没安装则调至appStore或应用宝下载app,下载完毕唤起app的相应页面。 2、iOS SDK集成 1、初始化 1.1 获取shareinstall 的AppKey 登录shareinstall后台管理