zoukankan      html  css  js  c++  java
  • 10_传智播客iOS视频教程_NSString

    从今天开始不会再去用C语言当中的字符串。因为OC当中设计了一种更为好用的存储字符串的变量。

    C的字符串和OC的字符串是有区别的。

    NSString类型的指针变量,只能存储OC字符串的地址.第一步是声明一个NSString的指针,

    //
    //  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个‘
    ’代表换行  那么函数的自动换行功能就会失效.
     
     
        ------
        忘记#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字符串的值,那么使用占位符%@
     */
    #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(@"我爱广州
    ");
        //NSLog(@"我爱广州
    
    ");
        //NSLog(@"我爱
    广州");
        //NSLog(@"jack");//输出jack
        //NSLog(@"Hello,World!");
        //NSString  *str;//指针变量 NSString类型的指针变量是存储OC字符串的.
        //NSLog(<#NSString * _Nonnull format, ...#>);//NSLog函数的第一个参数是NSString类型的.
        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 0;
    }

  • 相关阅读:
    JS新API标准 地理定位(navigator.geolocation
    微信公众号菜单
    js选择权
    mui 弹框
    又拍云
    弹框
    sublime插件
    将Apache的.htaccess转换到nginx中
    php 图片上传类
    C# 使用Com组件正确的释放方法
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/7114705.html
Copyright © 2011-2022 走看看