macOS中配置JDK环境变量
macOS中JDK安装路径:
OSX默认的JDK/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
这其实是一个符号链接,它指向:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
OS X自带的JRE/System/Library/Frameworks/JavaVM.framework/Versions/Current
ORACLE的JDK7/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
ORACLE的JRE7/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
OPENJDK7/Library/Java/JavaVirtualMachines/jdk1.7.0.jdk/Contents/Home
配置过程:
1、启动终端,可以在Spotlight中搜索“终端”
2、 ...
import指令与include指令的区别
#import指令和#include指令都是在引用系统的资源, 也可以理解为引用一个API或者代码包,但对引用的资源的操作不同。
对于资源A,如果连续多次使用 #import A 将A资源导入到我们的代码中,资源只会被导入一次,简单的描述为:底层对#import所导入的资源有一个重复验证,如果某一资源已经由#import导入,则不再对导入的资源进行再次导入。
而#include指令对同一资源的导入,会根据#include指令的使用次数,导入对应次数的同一资源。也就是说,如果有N条 #include A 指令,A资源就会被导入N次。
Objective-C中@符号说明
常见的两个功能:
1、将C字符串转换为OC字符串
2、OC中的大多数关键字都是以@符号开头
Objective-C中注释和函数的定义
小编之前是从事Android开发的,不浪费口舌了,直接上代码,看看注释就明了了
//// main.m// MyObjective-C//// Created by ZhaiKun on 2017/9/29.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>//这里表示的是单行注释/* 这里表示的多行注释 */void customMethod();//函数的定义int main(int argc, const char * argv[]) { @autoreleasepool //自动释放池,可以将代码写到自动释放池中,也可以将自动释放池删除,不会对应用程序造成影响 ...
Objective-C中NSString的使用
//// main.m// NSStringDemo//// Created by ZhaiKun on 2017/9/29.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>//Objective-C的一个基本框架,包含了很多的基本功能,Foundation.h头文件包含了Foundation框架中所有的头文件int main(int argc, const char * argv[]) { @autoreleasepool { /* NSString 1、用于声明字符串类型的指针变量,存储Objective-C字符串的地址 2、Objective ...
Objective-C中类的声明与实现
类的声明和实现语法//// main.m// ClassDemo 类//// Created by ZhaiKun on 2017/10/9.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>/* 类:具有相同特征和行为的对象的集合 对象:个人的理解是 万物皆对象 *///类的声明//Person 类名 首字母大写@interface Person : NSObject@end//类的实现@implementation Person@endint main(int argc, const char * argv[]) { @autoreleasepool { ...
Objective-C中的访问权限
//// main.m// PermissionDemo 权限访问修饰符//// Created by ZhaiKun on 2017/10/9.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>@interface Permission : NSObject{ //默认的访问权限,当前类和子类可访问 @protected int protectedPermission; //所有类都可以访问 @public int publicPermission; //只有当前类可以访问 @private int privatePermission; ...
Objective-C中类是如何存储在内存中的
内存的五大区域堆 手动申请的字节空间
栈 存储局部变量
BSS段 存储未被初始化的全局变量、静态变量
数据段(常量区) 存储已经被初始化的全局变量、静态变量、常量数据
代码段 存储代码
类的加载过程在程序的执行过程中,当类被首次访问(在声明类的指针变量或创建实例对象的时候)时,会将类的声明与实现的代码存储在内存的代码段中。类的加载只会被执行一次。当程序运行结束后,才会释放内存空间。
类的存储//// main.m// ClassLoadDemo 类在内存中的存储//// Created by ZhaiKun on 2017/10/9.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject{ @public N ...
Objective-C中NULL与nil的区别
NULL指针变量的值,表示该指针不指向内存中的任何1个地址空间,与0等价。
nil指针变量的值,表示该指针不指向内存中的任何1个地址空间,与0等价。
使用规范C语言指针类型,用NULL
OC类指针类型,用nil
//// main.m// NullAndNilDemo//// Created by ZhaiKun on 2017/10/9.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject@endint main(int argc, const char * argv[]) { @autoreleasepool { int *a = NULL;//表示a不指 ...
Objective-C中编程小技巧
1、分组导航
实现在同一个文件中,代码的快速定位。有如下代码文件:
//// main.m// GroupNavigationMark 分组导航标记//// Created by ZhaiKun on 2017/10/9.// Copyright © 2017年 ZhaiKun. All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject@end@implementation Person@end@interface Students : NSObject@end@implementation Students@end@interface Bird : NSObject- (void)fly;@end@implementation Bird-(void)fly{ NSLog(@ ...