oc

objective-c 第一个OC程序

百般思念 提交于 2020-03-27 10:59:07
3 月,跳不动了?>>> 开始Objective-C(以后简称OC)的准备工作。 1)Mac 一台。(既然决定要学OC了,装备还是必备的,程序猿攻城狮们钱挤挤总是有的。) 2) 环境的搭建: 打开终端: gcc -v 结果如果是: 说明已经安装了环境。 如果显示 -bash: gcc:command not found 建议先安装XCode(App Store里有下载,xcode下载好后会自动配置好gcc环境) 开始第一个OC程序 打开终端: a)创建工作目录 在工作目录下建立oc文件夹,在oc下建立base文件夹,基础训练的内容就放到这个base下面。 b) 开始Hello World,hello Objective-c! 打开终端,切换到 刚刚创建的base目录下 vi hello.m 进入vi 编辑器工作环境,shift+i 进入编辑模式 #import <Foundation/Foundation.h> int main() { NSLog(@"Hello world,Hello Objective-C!\n"); return 0; } 点击 ESC 切换到一般模式,输入:wq退出vi 在终端中输入 gcc -framework Foundation hello.m 对刚刚编写的代码进行编译,此时会在根目录下生成a.out文件 在终端中输入 ./a.out

【整理】OC中常用的关于时间格式的转换

Deadly 提交于 2020-03-24 11:26:12
3 月,跳不动了?>>> 代码可能有点乱 不过应该不影响使用 这些应该基本上能满足大部分用户对于时间的处理需求 DateTimeHelper.h文件 #import <Foundation/Foundation.h> @interface DateTimeHelper : NSObject //时间戳转化成字符串格式日期 YYYY-MM-dd HH:mm +(NSString*)dateTimeFromTimesp:(double)timeStamp; //时间戳转化成字符串格式日期 YYYY-MM-dd HH:mm:ss +(NSString*)dateTimeFromTimesp1:(double)timeStamp; //时间戳转化成字符串格式日期 YYYY-MM-dd +(NSString*)dateTimeFromTimespEx:(double)timeStamp; //时间戳转化成字符串格式日期 YYYY年MM月dd日 ss时mm分 +(NSString*)dateTimeFromTimespNYR:(double)timeStamp; //将时间戳转化成double +(double)dateToTimesp:(NSDate*)aDate; //获取当前日期是 几号 +(NSString*)currentDay; //相对时间 N年N月N日后的日期

OC中的特有语法

泪湿孤枕 提交于 2020-03-22 18:32:55
一、 分类 -Category 1. 基本用途 如何在不改变原来类模型的前提下,给类扩充一些方法?有 2 种方式 l 继承 l 分类( Category ) 2. 格式 分类的声明 @interface 类名 (分类名称) // 方法声明 @end 分类的实现 @implementation 类名 (分类名称) // 方法实现 @end 3. 好处 一个庞大的类可以分模块开发 一个庞大的类可以由多个人来编写,更有利于团队合作 给 NSString 增加一个类方法:计算某个字符串中阿拉伯数字的个数 给 NSString 增加一个对象方法:计算当前字符串中阿拉伯数字的个数 4. 给系统自带的类添加分类 5. 注意 Category可以访问原始类的实例变量,但不能添加变量,只能添加方法。如果想添加变量,可以考虑通过继承创建子类 Category可以实现原始类的方法,但不推荐这么做,因为它是直接替换掉原来的方法,这么做的后果是再也不能访问原来的方法 多个 Category 中如果实现了相同的方法,只有最后一个参与编译的才会有效 二、 类的本质 1. 类也是个对象 其实类也是一个对象,是 Class 类型的对象,简称“类对象” Class 类型的定义 typedef struct objc_class *Class; 类名就代表着类对象,每个类只有一个类对象 2. +load 和 +

OC中的点语法

被刻印的时光 ゝ 提交于 2020-03-22 18:32:32
main.m // 点语法-编译器特性,编译器遇到点语法会自动展开成相应的 //语法 //为了让其他语言的程序员能快速入手OC加入了点语法 //点语法的本质还是方法调用,不是访问成员变量 //(区别java,java的点语法是访问成员变量 //OC里面就一种方式访问成员变量,通过->) //stu.age = 10; 编译器遇到就会转成下面这种形式 //[stu setAge:10]; //stu.age = 10; 有参数就转成[stu setAge:10]; //stu.age; 没有参数就转成[stu age];get方法 #import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { Person *person = [Person new]; person.age = 100; NSLog(@"年龄是:%i",person.age); return 0; } Person.h #import <Foundation/Foundation.h> @interface Person : NSObject { int _age; } - (void)setAge:(int)age; - (int)age; @end Person.m #import

IOS开发之基础oc语法

喜你入骨 提交于 2020-03-22 18:32:14
类 1.类的定义: 类=属性+方法; -属性代表类的特征 -方法是类能对变化做出的反应 类定义的格式:类的声明和类的实现组成 -接口(类的声明):@interface 类名:基类的名字 .类名首字母要大写 .冒号表示继承关系,冒号后面的是类的父类 .NSObject是OC所有类的基类 .类的声明放在“类名+.h”文件中,要由两部分组成:实例变量和方法 -实现(类的实现):@implementation类名 .方法实现 -都用@end结束c 2.类的使用: OC中,对象通过指针来声明 如:ClassA *object; OC中对象的创建,使用alloc来创建一个对象,编译器会给object对象分配一块可用的内存地址,然后需要对对象进行初始化即调用init方法,这样这个对象才可以使用,如: Person *person=[Person alloc]; //创建对象分配空间 person=[person init]; //初始化赋初值, 初始化后:int=0,char=“*0”?,bool=FALSE 同一个类的每个对象有不同的实例变量的存储空间 同一类的每个对象共享该类的方法 方法嵌套的形式来调用,如:ClassA *object=[[ClassA alloc] init]; 3.类的访问权限 三种访问权限: -公有的:@public -私有的:@private -保护的:

编写 Objective-C 代码/掌握基本的编程技能 之 读后笔记

时光怂恿深爱的人放手 提交于 2020-03-15 22:03:18
类和接口(任何类可采用)的动态扩展 #import <Gizmo/Gizmo.h> @interface MyClass : NSObject { int count; id data; NSString* name; } - (id)initWithString:(NSString*)aName; + (MyClass*) 对象的类型化:静态类型化、动态类型化 多态性是指不同类型的对象响应同一消息的能力。 为避免声明大量局部变量来储存临时结果,Objective-C 让您嵌套消息表达式。 Objective-C 还提供用于调用存取方法的简单形式--点记法语法。存取接口。 对象隐藏或封装其状态,并显示接口。您还可以使用点记法语法进行赋值.在点记法表达式中,您不能使用对动态类型化的对象(类型为 id 的对象)的引用。 要么将类方法用作工厂方法创建类的新实例,要么访问与该类关联的一些共享信息。 您在类接口中包括方法声明和属性声明。 您在类的头文件中声明公共属性;而在源文件的类扩展中声明专有属性。 控制器对象(如委托和视图控制器)的属性通常应该为专有的。 自定选项来配置属性,以定义存取方法如何表现、属性是否为弱引用,以及是否为只读。选项位于圆括号中,前面是 @property 指令。 编译器自动合成所声明的属性。在合成属性时,它创建自己的存取方法,以及“支持”该属性的专有实例变量

oc类和对象

偶尔善良 提交于 2020-03-15 07:40:50
1、类和对象的概念 类是现实世界或者思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类类型的变量。类和对象是面向对象编程技术中得最基本的概念 2、类和对象的关系 类是对象的抽象,而对象是类的具体实例 类是抽象的,不占用内存,而对象是具体的,占用存储空间。 类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板 3、类的声明和实现 @interface Person : NSObject{     //成员变量的声明 注意:不能初始化     //成员变量默认是私有的,只在本身这个类中可以使用 } //方法的声明 @end //类的实现部分 @implementation Person @end @interface表示类的开始 Person 是这个类的类名 NSObject是这个类的父类 4、方法的声明 @interface Person : NSObject{   //成员变量的声明   NSString *name;   int age; } //方法的声明 -(void)setName:(NSString *)aName;//只有一个参数的方法 -(void)setName:(NSString *)aName andAge:(int)aAge;//多个参数 @end 5、方法的实现 @implementation

iOS:OC与JS交互

廉价感情. 提交于 2020-03-12 08:09:04
目的是为了在webView页面截取到js操作,然后跳出到本地进行处理 第一种方法:使用原生的处理方式 1.下边是本地的 a.html 的源代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <script> function test() { alert('clicked'); } function testParams(a, b){ alert(a+b); } </script> </head> <body> <button onclick="test()">点击我</button> <button onclick="testParams('hello', 123)">点击我(带参数)</button> </body> </html> 2.导入JavaScriptCore.framework,在需要调用的web页面加上头文件#import

oc描述器排序

ぐ巨炮叔叔 提交于 2020-03-11 21:44:44
int main(int argc, const char * argv[]) { @autoreleasepool { NSArray *array = @[CreateDict(@"王思聪", 27, YES), CreateDict(@"范冰冰", 35, NO), CreateDict(@"马云", 51, YES), CreateDict(@"霍建华", 36, YES), CreateDict(@"赵丽颖", 28, NO)]; //第1题 请按照年龄的升序排序输出,输出样式为:王思聪,男性,今年27岁 NSSortDescriptor *ageWithSort=[[NSSortDescriptor alloc]initWithKey:kAge ascending:YES]; NSArray *elementarr=[NSArray arrayWithObjects:ageWithSort,nil]; NSArray *sortArray=[array sortedArrayUsingDescriptors:elementarr]; NSLog(@"第一题"); NSLog(@"排序后:"); for (NSDictionary *dic in sortArray) { int i=[dic[@"gender"]intValue]; if (i==1) {

iOS下JS与原生的交互一

让人想犯罪 __ 提交于 2020-03-11 12:21:04
本篇主要讲的是UIWebView和JS的交互,在下一节会有wkWebView和JS交互的详解https://www.cnblogs.com/llhlj/p/9144110.html JS调用原生OC 方式一:url拦截,这里略过 注意:在iOS中拦截到的url scheme将全部转化为小写; html中需要设置编码,否则中文参数可能会出现编码问题; JS用打开一个iFrame的方式替代直接用document.location的方式,document.location 有一个很严重的问题,就是如果我们连续 2 次改 document.location 的话,在 delegate 方法中,只能截获后面那次请求,前一次请求由于很快被替换掉,所以被忽略掉。 方式二:通过JavaScriptCore(iOS 7之后),用来做JS交互,因此JS与原生OC交互也变得简单了许多。 //获取js上下文,及本地添加js调用方法,一般情况下都放在-(void)webViewDidFinishLoad:(UIWebView *)webView方法里。 -(void)webViewDidFinishLoad:(UIWebView *)webView{ //获取js上下文 self.jscontext = [webView valueForKeyPath:@"documentView.webView