`
啸笑天
  • 浏览: 3445889 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

iOS-在objc项目中使用常量的最佳实践

 
阅读更多

 

之前,在在objc项目中使用常量中,使用c的预处理#define来设置常量。比如,可以做个头文件,然后在需要的类文件中import,使用常量。

但这不是最佳实践。这样做可能是最好的方式,首先在比如叫Constants.h的头文件中:

 

  #import <Foundation/Foundation.h>
 
    extern NSString * const kInitURL;
 
    @interface Constants : NSObject {
 
    }
    @end

 这里使用到extern c关键字,表示这个变量已经声明,只是引用。const关键字表示变量是常量,不可修改。

在objc的约定里,常量也是大小写混排的驼峰命名规则,首字母小写,另外,第一个字母是k。

然后,在Constants.m文件中:

 

#import "Constants.h"
 
    NSString * const kInitURL = @"http://marshal.easymorse.com";
 
    @implementation Constants
 
    @end

 在这里给常量kInitURL赋值。

如何使用常量?只需在所需的m文件引入Constants头文件,下面是使用示例:

 

#import "BasicDemosViewController.h"
    #import "Constants.h"
 
    @implementation BasicDemosViewController
 
    // Implement loadView to create a view hierarchy programmatically, without using a nib.
    - (void)loadView {
        NSLog(@"load view: %@",kInitURL);
    }

 使用这种方式,比通过宏预定义的优点是,可以对常量进行指针比较操作,这是#define做不到的。即:

[myURL isEqualToString:kInitURL];

 

from:http://marshal.easymorse.com/archives/4149

 

是指可用于全局的常量。如果只是在文件内部使用,不希望之外的地方能访问到,就需要:

 

 #import "BasicDemosViewController.h"
    #import "Constants.h"
 
    NSString * const kMyURL=@"http://marshal.easymorse.com";
 
    @implementation BasicDemosViewController
 
    // Implement loadView to create a view hierarchy programmatically, without using a nib.
    - (void)loadView {
        NSLog(@"load view: %@, %@",kInitURL,kMyURL);
    }

 

 

 

 

 

 

 

 

分享到:
评论
1 楼 啸笑天 2015-09-08  
http://www.jianshu.com/p/f83335e036b5
1.const NSString *HSCoder = @"汉斯哈哈哈";
"*HSCoder"不能被修改, "HSCoder"能被修改

2.NSString const *HSCoder = @"汉斯哈哈哈";
"*HSCoder"不能被修改, "HSCoder"能被修改

3.NSString * const HSCoder = @"汉斯哈哈哈";
"HSCoder"不能被修改,"*HSCoder"能被修改

注意:1和2其实没什么区别
结论:const右边的总不能被修改

相关推荐

    ios-控件.zip

    在iOS应用开发中,Swift语言是苹果公司推出的一种强大且现代化的编程语言,它被广泛用于构建用户界面、实现业务逻辑以及与系统进行交互。"ios-控件.zip"这个压缩包显然包含了使用Swift编写的一些基础UI控件,这对于...

    iOS Objc.io Swift 进阶

    对于面向对象编程,书里会涵盖继承、多态和封装的概念,并讨论如何在实践中运用它们。 在iOS开发方面,本书将介绍如何使用Storyboard和AutoLayout构建用户界面,以及如何与UIKit框架交互来处理用户输入和响应事件。...

    OBJC中国-Swift 开发者必备Tips_Swift_iOS

    这篇资源“OBJC中国-Swift 开发者必备Tips”旨在为Swift开发者提供一系列实用的技巧和最佳实践,帮助他们提升开发效率,确保代码质量。 一、Swift语言特性 1. 类型安全:Swift对变量和常量的类型检查非常严格,能...

    ios-textview自适应高度.zip

    在iOS开发中,`UITextView` 是一个常用的控件,用于显示和编辑多行文本。在许多场景下,我们希望`UITextView`的高度能够根据其内部的文本内容自动调整,以便适应不同长度的文本,这就是所谓的"textview自适应高度"。...

    swift-iOS开发者在面试过程中常见的一些面试题建议尽量弄懂了原理并且多实践

    - 自定义错误类型可以遵循`Error`协议,以便在错误处理链中使用。 实践这些知识点的最佳方式是通过编写实际的项目,参与开源贡献,或者解决编程挑战。熟悉Apple的官方文档和参考书籍,如《The Swift Programming ...

    Objc中国--函数式Swift(4.0版本)

    《Objc中国--函数式Swift(4.0版本)》是一部深入...书中可能还会涵盖如何在实际项目中结合面向对象编程和函数式编程,以实现最佳的编程实践。无论你是Swift新手还是经验丰富的开发者,这本书都将提供宝贵的学习资源。

    iOS项目框架搭建

    在iOS应用开发中,构建一个高效且易于维护的项目框架是至关重要的。这不仅可以提高开发效率,还能确保代码的整洁性和可扩展性。本篇文章将详细介绍如何进行iOS项目的框架搭建,包括常用宏定义文件的创建、自定义控件...

    谈谈为何iOS开发别用宏来定义常量

    本文将详细解释为什么不应在iOS开发中使用宏定义常量,并介绍更安全、更规范的替代方案。 首先,宏定义并不是真正的常量,而是预处理器指令。这意味着在编译阶段,宏会被其定义的内容替换,可能导致意外的结果。...

    IOS应用源码Demo-单例模式-毕设学习.zip

    这里使用GCD的`dispatch_once`来保证线程安全,但`dispatch_once`在Swift 3之后已被废弃,所以现代Swift代码更倾向于使用静态常量`sharedInstance`来实现单例。 ### 2. `@objc` + `dispatch_once` 方式 ```swift ...

    ios 在一定范围随机选取demo

    在iOS开发中,有时我们需要实现一个功能,即在特定范围内随机选取一个值,这在游戏、抽奖应用或者任何需要随机性的场景中都很常见。标题"ios在一定范围随机选取demo"指的是一个iOS示例项目,它展示了如何在指定的...

    iOS学习——block深入浅出-代码

    在iOS开发中,Block是一种强大的、灵活的编程结构,它允许你在代码...在实际项目中,熟练掌握Block的使用将极大地提升开发效率和代码质量。通过分析提供的代码样例,你可以更深入地理解Block的各种应用场景和实现细节。

    详解IOS宏与常量的使用(define,const)

    当在代码中使用`HSCoder`时,预处理器会将其替换为`@"汉斯哈哈哈"`这个字符串。宏的优点在于它简单且快速,但也有几个缺点: 1. 宏不进行类型检查,可能导致类型错误。 2. 宏的文本替换可能导致意料之外的结果,尤其...

    iOS 主图色切换,通过自定义的颜色对象处理

    在iOS应用开发中,主图色的切换是一个常见的需求,特别...在实践中,还需要考虑性能优化,比如避免不必要的视图重绘,以及处理深色模式等。通过这种方式,开发者可以轻松地实现应用的个性化定制,提供更好的用户体验。

    IOS官方标准_单例模式

    在Swift中,我们使用静态常量和私有构造函数来确保单例的唯一性。`sharedInstance` 一旦被声明,就不会再改变,且构造函数`init()`为私有,外部无法直接调用。 单例模式的优势在于: 1. **全局访问点**:任何地方...

    IOS应用源码——单例模式.zip

    在iOS应用中,当多个类需要访问同一份数据或者服务时,如网络连接、用户偏好设置、数据库管理等,使用单例可以避免创建多个实例导致的资源浪费和状态不一致问题。单例对象在应用生命周期内只会初始化一次,因此内存...

    自己写的关于单例学习的理解

    单例模式是软件设计模式中的一种,主要用于控制类的实例化过程,确保在整个应用程序中,一个类只有一个...通过阅读这些材料,你可以更深入地理解单例模式,并将其应用到自己的iOS开发实践中,提升代码质量和可维护性。

    ios应用源码之单例模式 2018127

    在iOS开发中,我们通常使用Objective-C或者Swift来编写代码,这两种语言都有各自实现单例的方法。 在Objective-C中,单例的常见实现方式如下: ```objc // 单例声明 + (instancetype)sharedManager; // 单例实现 ...

    compile-time-guaranteed:谈论ObjC和Swift中Swift峰会的编译时保证

    在描述中提到的“展示”可能是指一次技术演讲或会议,其中讨论了这些编译时保证的概念,并可能深入探讨了如何在实际项目中利用它们来提高代码质量。然而,由于提供的信息有限,无法进一步详细描述具体的讨论内容。 ...

    iOS中常用的宏定义总结

    在iOS开发中,宏定义(Macro Definitions)是预处理器(Preprocessor)的一种功能,它允许开发者用简短的符号来代表复杂的表达式或者代码块,从而提高代码的可读性和可维护性。以下是对iOS中常用宏定义的详细总结: ...

    iOS单例代码

    在实际项目中,合理使用单例可以帮助我们更好地组织代码,但也要注意避免滥用。博客地址(http://blog.csdn.net/liuyinghui523/article/details/79423495)可能会提供更深入的讨论和示例,你可以参考学习。在...

Global site tag (gtag.js) - Google Analytics