`
lizaochengwen
  • 浏览: 658160 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nsbundle

阅读更多
- 思考: NSBundle ---

bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBundle.

我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle

bundle中的有些资源可以本地化.例如,对于foo.nib,我们可以有两个版本: 一个针对英语用户,一个针对法语用户.  在bundle中就会有两个子目录:English.lproj和French.lproj,我们把各自版本的foo.nib文件放到其中. 当程序需要加载foo.nib文件时,bundle会自动根据所设置的语言来加载. 我们会在16章再详细讨论本地化

通过使用下面的方法得到程序的main bundle
NSBundle *myBundle = [NSBundle mainBundle];

一般我们通过这种方法来得到bundle.如果你需要其他目录的资源,可以指定路径来取得bundle
NSBundle *goodBundle;
goodBundle = [NSBundle bundleWithPath:@"~/.myApp/Good.bundle"];

一旦我们有了NSBundle 对象,那么就可以访问其中的资源了
// Extension is optional
NSString *path = [goodBundle pathForImageResource:@"Mom"];
NSImage *momPhoto = [[NSImage alloc] initWithContentsOfFile:path];

bundle中可以包含一个库. 如果我们从库得到一个class, bundle会连接库,并查找该类:
Class newClass = [goodBundle classNamed:@"Rover"];
id newInstance = [[newClass alloc] init];

如果不知到class名,也可以通过查找主要类来取得
Class aClass = [goodBundle principalClass];
id anInstance = [[aClass alloc] init];

可以看到, NSBundle有很多的用途.在这章中, NSBundle负责(在后台)加载nib文件. 我们也可以不通过NSWindowController来加载nib文件, 直接使用NSBundle:
BOOL successful = [NSBundle loadNibNamed:@"About" owner:someObject];
注意噢, 我们指定了一个对象someObject作为nib的File's Owner
原文地址:http://blog.csdn.net/iphoneing/article/details/5872610
分享到:
评论

相关推荐

    Apple NSBundle 使用说明文档

    ### Apple NSBundle 使用说明 #### 一、NSBundle简介 `NSBundle`是苹果为开发者提供的一种资源管理类,它主要用于组织和访问应用程序中的资源文件。在iOS和macOS开发中,NSBundle是一个非常重要的类,它可以帮助...

    NSBundle读取图片 plist文件和txt文件

    在iOS开发中,NSBundle是苹果提供的一个非常重要的类,它用于加载和管理应用程序中的资源,如图片、字符串、音频文件等。在这个主题中,我们将深入探讨如何使用NSBundle来读取图片、plist文件以及txt文件。 首先,...

    iphone NSBundle 详解

    `NSBundle`是iOS和macOS开发中的核心组件之一,它代表了一个应用程序或动态库的资源容器。这篇关于`NSBundle`的详解将深入介绍其主要功能和使用方式。 首先,`NSBundle`对象通常用来管理和访问应用内的资源,如图片...

    IOS UI学习教程之区分NSBundle和NSURL(读取文件、写入文件)

    在iOS开发中,`NSBundle` 和 `NSURL` 都是用来处理资源文件的类,但它们在功能和使用场景上有所不同。这篇教程将帮助你理解这两个类的区别,并展示如何使用它们来读取和写入文件。 首先,`NSBundle`(Bundle)是iOS...

    自定义开关按钮(ios)

    例如,用图片代替:UIImage *normal_left = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"left_normal" ofType:@"png"]]; UIImage *normal_right = [[UIImage alloc] ...

    iOS 5 Programming Cookbook.pdf

    - **实现方法**:使用NSBundle类的实例方法从指定捆绑包加载资源。 - **应用场景**:当应用程序需要访问来自不同模块的资源时。 - **1.29 通过NSNotificationCenter发送通知** - **知识点**:事件通知机制。 - *...

    ios-中英文语言切换.zip

    在实现语言切换功能时,需要更新当前的NSBundle,例如使用`[[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"zh-Hans" ofType:@"lproj"]] localizedStringForKey:@"key" value:@"" table:nil]`...

    ios播放caf语言文件工具类集成即可使用.zip

    这两个文件定义了一个名为BHAudioTools的类别,它扩展了Foundation框架中的NSBundle类,增加了对CAF文件播放的支持。 在BHAudioTools.h中,通常会声明一些公共方法,如初始化播放器、播放音频、暂停音频、停止音频...

    IOS获取当前版本号 Bundle ID等信息的方法详解

    1:获取bundle Id信息:[[NSBundle mainBundle]bundleIdentifier]; 2:获取版本号:[[[NSBundle mainBundle]infoDictionary] objectForKey:@”CFBundleShortVersionString”]; 3:获取build号:[[[NSBundle ...

    (OC)Config.zip

    在代码中,可以通过`NSBundle`类的` mainBundle`方法获取当前应用的Bundle ID: ```objc NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier]; ``` 2. **App名称**: 应用的显示名称可以在Info....

    (OC)多语言适配.zip

    使用`-[NSBundle mainBundle]`获取主bundle,而`-[NSBundle bundleWithPath:]`可以加载特定语言的bundle。 5. **NSLocalizedString**: 这是Objective-C中用于本地化字符串的宏。它会自动查找并返回与当前用户首选...

    UIKit_Framework iOS

    - **NSBundle UIKit Additions Reference**:这部分文档介绍了NSBundle在UIKit中的扩展功能。NSBundle是一种用于封装资源文件(如图像、声音和其他非代码资源)的容器,UIKit对其进行了增强,使其更适合iOS应用的...

    IOS之JsonKit解析,版本号获取

    1. **使用NSBundle**: `NSBundle`是iOS中的一个类,它提供了访问应用程序资源的方法。可以通过`mainBundle`属性获取主bundle,然后调用`infoDictionary`方法获取Info.plist文件中的键值对,其中`...

    IOS系统资源类

    `NSBundle`是苹果提供的一个基础类,它包含了应用程序的资源信息,包括BUNDLEID。以下是一个简单的示例: ```objc NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier]; ``` 这段代码会返回当前运行的...

    ios-MCTableView.zip

    MCtCell * cell = [[[NSBundle mainBundle]loadNibNamed:@"Order" owner:self options:nil]objectAtIndex:0]; cell.title.text = @"区头"; MCtCell * cell1 = [[[NSBundle mainBundle]loadNibNamed:@...

    iOS开发-动态库加载(实时模块更新).doc

    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"DynamicLink" ofType:@"framework"]]; id<NSObject> dynamicOpenMenth = [bundle loadAndReturnClass:[NSClassFromString...

    iOS程序有固定的文件访问限制

    在iOS平台上,应用程序被设计为在安全的环境中运行,这个环境被称为“沙盒”。...掌握如何在沙盒内读写文件,以及如何利用`NSBundle`和`FileManager`进行路径管理,将有助于我们构建更加健壮和安全的应用。

    iphone全局变量配置

    NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:@"Config" ofType:@"plist"]; NSDictionary *configDict = [NSDictionary dictionaryWithContentsOfFile:path]; ``` 3. 使用`...

    OC Extension LoadPodImage.zip

    此扩展包提供了通过路径读取图片的方法,这可能涉及到`NSBundle`的使用,例如`NSBundle.mainBundle()`来获取主bundle,或者`NSBundle(forClass:)`来获取特定类的bundle,然后使用`pathForResource:ofType:`来查找...

Global site tag (gtag.js) - Google Analytics