美文网首页iOS开发小Tips
ios开发Xcode环境基础

ios开发Xcode环境基础

作者: 冷武橘 | 来源:发表于2021-08-20 18:05 被阅读0次

一、环境变量

1、常见环境变量

$(PRODUCT_BUNDLE_IDENTIFIER)

  • product bundle identifier 就是App的唯一标识

$(PRODUCT_NAME):product name // 产品名字

  • PRODUCT_NAME 就是可以看做是App的名字,App的名称可以在,也可以直接修改Info.plis中对应的键,还可以在Build Settings中修改Product Name来修改(默认是$(TARGET_NAME):即当前选中的target对应的值

${EXECUTABLE_NAME}

  • Executable name – 执行程序名,默认与 PRODUCT_NAME 一致。

$(INHERITED)

  • 继承
    Xcode项目中很多地方都有(inherited),(inherited)的意思就是继承上一级或依赖项的配置。通过CocoaPods集成的项目,$(inherited)将会包含Pods.xcodeproj中的配置。

$(SRCROOT)

  • 项目的根目录,
    SRCROOT=/Users/hanlitao/Desktop/demo

$(PROJECT_DIR) = $(SRCROOT)

  • 在实际项目中,PROJECT_DIR和$(SRCROOT)可以相互替换使用。

${PODS_ROOT}

  • 代表的是pod目录

2、Bundle name和Bundle display name

Bundle name:简单来说就是 App 安装到 iOS 机子里的 App 文件夹名。 也就是ipa的包名
Bundle display name :app在设备上的显示名字

二、Search Paths

  • Use Header Maps
    默认值是Yes,开启这个开关后,在本地会根据当前目录生成一份文件名和相对路径的映射,依靠这个映射,我们可以直接import工程里的文件,不需要依靠header search path。如果将Use Header Maps设置为NO,则不会生成映射。


    截屏2021-08-20 下午3.40.26.png
截屏2021-08-20 下午3.42.47.png
如图这样将Use Header Maps设置为NO,直接#import “Student.h”会编译报错。这是因为上面所说的原因没有生成对应的路径映射。此时,Student.h和Viewcontoller.h是在同一目录下,直接导入Student.h的路径是不正确的。Modle/Student才是正确的路径。
截屏2021-08-20 下午3.49.37.png
这样#import "Modle/Student.h”才会是正确的路径。总结一下:如果将Use Header Maps设置为NO,不会生成映射路径,你需要导入自己正确的文件路径才行

当然你直接导入绝对路径也能解决问题


image.png
  • Use Header Search Paths:用户头文件的搜索目录源
  • Header Search Paths:本地头文件的搜素目录源
    怎么理解呢?

首先明确的是Use Header Search Paths和 Header Search Paths还是和导入头文件有关,再回忆一下导入文件的方式有<>和“”两种。#import <>和#import "”的区别是什么:在开发中我们的经验是系统库和第三库用 <>,自定义文件用“”。

而更详细具体的来讲:<>是从系统目录空间 (对应Header Search Paths)中搜索文件,而" “ 是先从用户目录空间(对应 User Header Search Paths)中搜索文件,如果搜索不到再从系统目录空间中搜索文件。

因此 Use Header Search Paths和Header Search Paths的作用相
同的,区别就是Header Search Paths指定了它们是系统目录;而Use Header Search Path指定了它们是用户目录。

截屏2021-08-20 下午5.31.09.png 截屏2021-08-20 下午5.36.09.png
  • 1、如果指定了Header Search Paths的目录源,这样直接导入文件就可以了。

  • 2、当 #import “Person.h”时,会先去Use Header Search Paths的目录源开始找,而Use Header Search Path此时没有目录源,就会从接着从Header Search Paths的目录源开始查找。

  • 3、当 #import <Student.h>时,就会直接从Header Search Paths的目录源开始查找。


    截屏2021-08-20 下午5.41.57.png
截屏2021-08-20 下午5.42.25.png
  • 当 #import <Student.h>时,只会直接从Header Search Paths的目录源开始查找。而此时Header Search Paths找不到,自然编译就会报错

小结一下:

  • 1、import””在Use Header Search Paths和Header Search Paths中都可以使用。
  • 2、import<>在Header Search Paths中或者系统库时才能使用。
  • 3、import””导入头文件查找的顺序应该是:
    如果有路径映射(Use Header Maps=YES),直接通过映射表获取;
    没有路径映射Use Header Maps=NO),会先去Use Header Search Paths的目录源开始找,如果找不到再去Header Search Paths中查找。
  • 4、import<>导入头文件,可以从Header Search Paths查找。所以使用import<>不仅仅是引用系统类,还可以是自定义类。

相关文章

网友评论

    本文标题:ios开发Xcode环境基础

    本文链接:https://www.haomeiwen.com/subject/pgqspltx.html