我有一个来自QuickLook框架的协议:
/*!
* @abstract The QLPreviewItem protocol declares the methods that a QLPreviewController instance uses to access the contents of a given item.
*/
@protocol QLPreviewItem <NSObject>
@required
/*!
* @abstract The URL of the item to preview.
* @discussion The URL must be a file URL.
*/
@property(readonly) NSURL * previewItemURL;
@optional
/*!
* @abstract The item's title this will be used as apparent item title.
* @discussion The title replaces the default item display name. This property is optional.
*/
@property(readonly) NSString * previewItemTitle;
@end
/*!
* @abstract This category makes NSURL instances as suitable items for the Preview Controller.
*/
@interface NSURL (QLPreviewConvenienceAdditions) <QLPreviewItem>
@end
Run Code Online (Sandbox Code Playgroud)
我正在尝试为readonly属性previewItemTitle创建getter和setter,以便我可以添加自定义tile:
.H
#import <Foundation/Foundation.h>
#import <QuickLook/QuickLook.h>
@interface QLPreviewItemCustom : NSObject <QLPreviewItem> {
NSURL * previewItemURL;
NSString *previewItemTitle;
}
@property(readonly) NSURL * previewItemURL;
@property (readonly) NSString *previewItemTitle;
@end
Run Code Online (Sandbox Code Playgroud)
.M
#import "QLPreviewItemCustom.h"
@implementation QLPreviewItemCustom
@synthesize previewItemTitle;
@synthesize previewItemURL;
@end
Run Code Online (Sandbox Code Playgroud)
这样,据我所知,我将使用synthesize方法创建getter.我该如何创建setter?
如果只是在QLPreviewItemCustom你想要访问setter的实现中,那么为什么不将类继续类中的属性扩展为read-write:
QLPreviewItemCustom.m
#import "QLPreviewItemCustom.h"
@interface QLPreviewItemCustom ()
@property (readwrite) NSURL *previewItemURL;
@property (readwrite) NSString *previewItemTitle;
@end
@implementation QLPreviewItemCustom
@synthesize previewItemTitle;
@synthesize previewItemURL;
@end
Run Code Online (Sandbox Code Playgroud)
如果你想在任何地方使用setter,那么你将不得不使用不同的ivar名称并写下你的原始内容的getter来传递给你的新名字.像这样:
QLPreviewItemCustom.h
#import <Foundation/Foundation.h>
#import <QuickLook/QuickLook.h>
@interface QLPreviewItemCustom : NSObject <QLPreviewItem> {
NSURL *url;
NSString *title;
}
@property (readwrite) NSURL *url;
@property (readwrite) NSString *title;
@end
Run Code Online (Sandbox Code Playgroud)
QLPreviewItemCustom.m
#import "QLPreviewItemCustom.h"
@implementation QLPreviewItemCustom
@synthesize url;
@synthesize title;
- (NSURL*)previewItemURL {
return self.url;
}
- (NSString*)previewItemTitle {
return self.title;
}
@end
Run Code Online (Sandbox Code Playgroud)
值得指出的是,自己使用与另一个框架使用的相同类前缀通常不是一个好主意.即不要打电话QLPreviewItemCustom- 称之为ABCPreviewItemCustom.
| 归档时间: |
|
| 查看次数: |
2101 次 |
| 最近记录: |