11_传智播客iOS视频教程_NS前缀和@符号
NS前缀的有NSLog和NSString
Cocoa就是用来开发带界面的应用程序。
Foundation框架之中的类、函数绝大多数都是从NextStep来的。看到NS前缀就知道这个类是从哪里来的。是很久之前由NextStep公司开发的类。是从NextStep来的,历史非常悠久。这就是NS前缀的意思。
我们学到类的时候可能也会用一些前缀。比如我们写一个类Person类,可能叫做CCPerson或者是ICPerson,表示这个类是由我写的。一看这个类就是传智播客写的。所以这就是前缀。
OC这个语言当中有很多关键字。OC当中绝大多数的关键字都是以@符号开头的。
- @autoreleasepool {
- <#statements#>
- }
- @public
- //
- // main.m
- // Day01-OC基础语法
- //
- // Created by blueheart on 17/7/2.
- // Copyright © 2017年 itcast. All rights reserved.
- //
- /*
- 1.OC相对于C
- a.在C的基础之上新增了一小部分面向对象的语法.
- b.将C的复杂的、繁琐的、可恶的语法封装的更为简单.
- c.OC完全兼容C语言.
- 2.OC程序的源文件的后缀名是.m m代表message 代表OC中最重要的1个机制 消息机制.
- C程序的源文件的后缀名.c
- 3.main函数仍然是OC程序的入口和出口.
- int类型的返回值 代表程序的结束状态.返回值0是正常结束.
- main函数的参数:仍然可以接收用户在运行程序的时候传递数据给程序内部.
- 参数也可以不要.
- 4. #import指令
- 1).以#号开头,是一个预处理指令.
- 2).作用: 是#include指令的增强版. 将文件的内容在预编译的时候拷贝到写指令的地方.
- 3).增强: 同1个文件无论#import多少次,只会包含一次.
- 如果#include指令要实现这个效果 就必须要配合条件编译指令来实现.
- 而#import指令只需要直接包含就可以 其他什么都不用做.
- 4).简要原理: #import指令在包含文件的时候,底层会先判断这个文件是否被包含 如果被包含就会略过 否则才会包含.
- 5. 框架
- 1). 是1个功能集 苹果或者第三方事先将一些程序在开发程序的时候经常要用到的功能事先写好.把这些功能封装在1个1个的类或者函数之中.
- 这些函数和类的集合久叫做框架.
- 有点像c语言的函数库.
- 2). Foundation框架.
- Foundation: 基础 基本. 这个框架中提供了一些最基础的功能 输入和输出. 一些数据类型.
- Foundation.h的路径:
- /Volumes/Xcode/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/Foundation.h
- Foundation.h这个文件中包含了Foundation框架中的其他的所有的头文件.
- 所以,我们只要包含Foundation.h,就相当于包含了Foundation框架中所有的头文件.
- 那么Foundation框架中的所有的函数和类就可以直接使用.
- 6. @autoreleasepool是自动释放池.
- 你只需要知道这个是1个自动释放池.
- 你可以将代码写在自动释放池之中 或者干脆把这个自动释放池删除 目前不会有任何影响.
- 7. NSLog函数.
- 1). 作用: 是printf函数的增强版. 向控制台输出信息.
- 2). 语法:
- NSLog(@"格式控制字符串",变量列表);
- 最简单的语法:
- NSLog(@"要输出的信息");
- 3). 增强:
- a. 输出一些调试相关信息.
- 2017-07-06 00:42:34.173 Day01-OC基础语法[440:4804] Hello,World!Program ended with exit code: 0
- 执行这段代码的时间.173毫秒.
- 程序的名称.
- 440:4804是进程的号码 进程的编号 每一个正在运行的程序都是一个进程 如果你说起windwos操作系统的话 你知道有一个任务管理器
- 在任务管理器可以看到每一个进程它占用的CPU的消耗 实际上这个mac也有一个叫做活动管理器 XCode运行起来也是一个进程
- 进程编号. 456是进程编号.
- 线程编号. 4804是线程编号.
- 输出的信息. NSLog相对于printf()函数它做的第一个增强.
- b. 会自动换行.在输出完信息之后 会自动换行.
- c. printf()函数可以输出变量的值 OC中新增了一些数据类型. 新增的这些数据类型只能使用NSLog来输出它的值. 不能用printf() NSLog函数不仅仅可以输出C数据类型变量的值还可以输出OC新增的数据类型的变量的值.
- 4). 用法: 和printf()函数的用法其实是差不多的.printf()函数可以输出变量的值.NSLog一样可以输出变量的值 并且占位符和用法 都一样
- 5).使用注意:
- a. NSLog函数的第1个参数前面必须要加1个@符号.
- b. 如果手贱在字符串的末尾加了1个‘\n’代表换行 那么函数的自动换行功能就会失效.
- ------
- 忘记#include 用#import
- 忘记printf 用NSLog
- 8. 字符串
- 1) C语言的字符串的存储方式
- a. 使用字符数组存储
- b. 使用字符指针
- 2) OC中设计了1个更为好用的用来存储字符串的1个类型. NSString
- NSString 类型的指针变量 专门用来存储OC字符串的地址.
- 3). OC的字符串常量必须要使用1个前缀@符号.
- "jack" 这是1个C语言的字符串.
- @"jack" 这是1个OC的字符串常量.
- NSString 类型的指针变量只能存储OC字符串常量的地址
- NSString类型的指针变量,只能存储OC字符串的地址.
- NSString *str = @"jack";
- 4).总结
- a. 在OC中专门设计了1个NSString类型来存储字符串.
- b. 字符串分为C字符串和OC字符串.
- 字符串如果没有@前缀 那么这个字符串常量就是1个C字符串.
- 字符串如果有@前缀 那么这个字符串常量就是OC字符串.
- @"jack"
- "rose"
- @符号仅仅是针对字符串常量而言的.
- 所以,OC字符串常量的前面必须要加1个@符号.
- c. NSString类型的指针变量 只能存储 OC字符串.
- NSString *str = @"jack";//NSString类型的指针只能去给它赋一个OC串. C的串赋给它直接报语法错误.
- 初始化这个NSString指针的时候,记住你不要初始化一个C的串给它.
- 5). 注意
- 1). NSLog函数的第1个参数是1个OC字符串,所以NSLog函数的第1个实参应该以@符号开头.
- 2). 如果要使用NSLog函数输出OC字符串的值,那么使用占位符%@
- 9. NS前缀.
- NextStep ------> Cocoa ------> Foundation框架之中.
- 10. @符号
- 1). 将C字符串转换为OC字符串.
- "jack" @"jack"
- 2). OC当中绝大部分的关键字都是以@符号开头.
- */
- #import <Foundation/Foundation.h>
- //#include "itcast.h"
- //#include "itcast.h"
- //#include "itcast.h"
- //#include "itcast.h"
- //#import "itcast.h"
- //#import "itcast.h"
- //#import "itcast.h"
- //#import "itcast.h"
- //#import "itcast.h"
- //#import "itcast.h"
- //#import "itcast.h"//无论import多少次 最终编译器只会把文件的内容包含一次 这就是import指令牛叉的地方
- //int main(int argc, const char * argv[]) {
- int main() {
- // @autoreleasepool {
- // insert code here...
- // NSLog(@"Hello, 传智播客!");
- //}
- //printf("Hi.......");//可以写printf,因为在OC当中是完全兼容C的.
- //NSLog(@"Hello,World!");
- //float f1 = 12.12;
- //NSLog(@"jack");//输出jack
- //
- //
- //
- //
- //假如中间有个五万次循环 CPU在执行的时候它花了多少时间 后面经常可能要考虑到性能中的原因 我就要测一下这段代码到底花了多长时间来执行
- //程序名怎么用 多个target可以一起执行 我们现在同时只能执行一个target 后面学习高级调试的时候多个target同时执行.有一个问题 怎么知道这句话是哪个target输出的呢?
- //float f1 = 12.12;//不加f是个double类型的 它在内存当中占据8个字节 加了f就是float性质的 它占4个字节
- //float f1 = 12.12f;
- //NSLog(@"jack f1 = %f",f1);
- //NSLog(@"我爱广州\n");
- //NSLog(@"我爱广州\n\n");
- //NSLog(@"我爱\n广州");
- //NSLog(@"jack");//输出jack
- //NSLog(@"Hello,World!");
- //NSString *str;//指针变量 NSString类型的指针变量是存储OC字符串的.
- //NSLog(<#NSString * _Nonnull format, ...#>);//NSLog函数的第一个参数是NSString类型的.
- @autoreleasepool {
- <#statements#>
- }
- @public
- NSLog(@"jack");
- //这个时候需要初始化一个字符串给它
- NSString *str = @"jack";
- //NSLog(@"大家好,我叫%s",str);//试一下并不怀孕 占位符%s是用来输出C语言的字符串.而这里是OC字符串.
- //NSString *str = "jack";//NSString类型的指针变量只能存储OC字符串的地址,不能存储C语言的字符串.
- NSLog(@"大家好,我叫%@",str);//使用占位符%@来输出OC字符串.
- NSLog(str);//NSLog函数的第一个参数是OC字符串,直接给它一个OC字符串.
- return ;
- }
11_传智播客iOS视频教程_NS前缀和@符号的更多相关文章
- 08_传智播客iOS视频教程_Foundation框架
比如产生随机数.这个功能要你写吗?不用,因为苹果已经写好了.后面想开发一个ios程序,往界面上放一个按钮,实际上这个按钮不用你写别人已经写好了,你就拿过来拖一下就可以了. 框架是1个功能集 苹果或者第 ...
- 12_传智播客iOS视频教程_注释和函数的定义和调用
OC的注释和C语言的注释一模一样.它也分单行注释和多行注释. OC程序里面当然可以定义一个函数.并且定义的方式方法和调用的方式方法和我们C语言是一模一样的.OC有什么好学的?一样还学个什么呢? 重点是 ...
- 10_传智播客iOS视频教程_NSString
从今天开始不会再去用C语言当中的字符串.因为OC当中设计了一种更为好用的存储字符串的变量. C的字符串和OC的字符串是有区别的. NSString类型的指针变量,只能存储OC字符串的地址.第一步是声明 ...
- 09_传智播客iOS视频教程_自动释放池与NSLog函数
不要管什么是自动释放池,现在给你讲你也听不懂.就业班才讲,不要知道太多,知道太多对你不好.电影里面死的最惨的人就是知道最多的人.把代码写到自动释放池里面就可以了.NSLog是printf的增强版,它增 ...
- 07_传智播客iOS视频教程_#import指令
mac切换中英文输入法默认是Ctrl+空格键. 预处理指令的执行时机是在编译之前.在编译之前执行预处理指令. #import指令是包含文件,将指定的文件的内容在预编译的时候拷贝到写指令的地方. #im ...
- 06_传智播客iOS视频教程_源文件后缀名和main函数
OC与C语言的不同. 把OC程序运行起来,CPU只会找main函数.并且只会执行main函数当中的代码.当main函数的代码执行完毕之后这个程序就自动结束掉了. main函数的参数是可以让我们在运行程 ...
- 01_传智播客iOS视频教程_课程介绍与知识点回顾
OC语法中static关键字不能修饰属性,也不能修饰方法,只能修饰方法中的局部变量.static修饰局部变量之后把局部变量变成静态变量.当方法执行完之后这个变量不会被回收.下次再执行这个方法的时候这个 ...
- 13_传智播客iOS视频教程_OC程序的编译链接
C程序的编译.链接.执行怎么来的?在.C文件里面写上符合C语言部分的源代码.OC也是一样的.记住:OC程序的后缀名是.m. 为什么要链接?第一个.o的目标文件里面它启动不了.因为它没有启动代码我们要加 ...
- 05_传智播客iOS视频教程_第一个OC程序
Cocoa Application开发的是带界面的程序. OC是完全兼容C语言的,但是C语言里面是不能写OC的东西的. OC和C的第一个区别,就是源文件的后缀名的区别.OC程序的源文件的后缀名是.m, ...
随机推荐
- 【ZJOI2017 Round1练习&BZOJ4766】D1T2 文艺计算姬(Prufer编码)
题意:给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图K_{n,m},求其生成树个数 mod p. 100%的数据:1 <= n,m,p <= 10^18 思路:这是 ...
- windows7 下安装使用memcached
Memcached 安装使用 本地环境:Windows7 64位web环境:wamp集成环境,php版本:PHP Version 7.1.17 学习参考网站: RUNOOB.COM官网 http:/ ...
- 离线配置Anaconda3+tensorflow-gpu1.4.0+cuda8.0+cudnn6.0
1.首先下载anaconda3 ----从官网上下载Anaconda3-5.1.0-Linux-x86_64.sh 直接通过命令 bash Anaconda3-5.1.0-Linux-x86_64.s ...
- PAT (Advanced Level) 1035. Password (20)
简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...
- SQL Server vNext CTP 1.2
https://msdn.microsoft.com/en-us/library/mt788653.aspx
- java去空格
1.trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 3.或者replaceAll(&quo ...
- 关键字检索高亮标出-javasript/jQuery代码实现
原文:http://www.open-open.com/code/view/1454504432089 此方法传入2个参数,一个是被检索内容所在的表单或者HTML元素的ID,另一为关键字,多个关键字的 ...
- datasnap使用ipv6
有些人说DATASNAP不支持IPv6,只支持IPv4. 这是不正确的. DATASNAP默认是使用IPv4在ipv6 环境下 怎样用datasnap?Params.Values['Communica ...
- ArcEngine读取ShapeFile时,出现乱码的解决方案
ArcEngine读取ShapeFile时,如果用LicenseControl的话,字段中含有汉字时可以正常使用,当使用LicenseInitializer进行初始化时,读取含有汉字的字段时,就会出现 ...
- Meteor会话
会话用于当用户在使用应用程序时保存数据.当用户离开应用这些数据将被删除. 在本教程中,我们将学习如何设置会话对象,存储一些数据并返回数据.我们将使用基本的HTML设置. meteorApp/impor ...