我正在观看WWDC ARC介绍视频,在看到一个Apple工程师谈到Stack示例之前,我看到过ObjC中从未见过的东西.
以下代码用于ARC的堆栈示例:
@implementation Stack
{
// instance variable declared in implementation context
NSMutableArray *_array;
}
- (id)init
{
if (self = [super init])
_array = [NSMutableArray array];
return self;
}
- (void)push:(id)x
{
[_array addObject:x];
}
- (id)pop
{
id x = [_array lastObject];
[_array removeLastObject];
return x;
}
@end
Run Code Online (Sandbox Code Playgroud)
请注意在@implementation指令之后声明的实例变量.
现在让我感到惊讶的是,实际变量实际上可以在实现文件中声明,而不是静态变量.我的问题如下:
我想创建一个具有非常灵活的图形用户界面(skinnable)的项目.为了实现这一点,我想从外部资源(例如网站)加载NSBundle.捆绑包应包含与主项目中的某些属性和方法相对应的nib(IBOutlets和IBActions)
Apple似乎限制了以这种方式使用NSBundle的可能性.有什么方法可以让我的工作吗?如果以传统方式不可能,那么什么是可推荐的替代方法?
首先,我是Android新手 - 这个问题看起来很愚蠢:)
我创建了一个包含ViewPager的主Activity.ViewPager链接到我的ActionBar选项卡.目前我的主要Activity以这种方式包含3个选项卡.
我的问题如下:当我在第3个选项卡上创建一个新的Activity,然后返回到我的主Activity时,我总是返回到我的第一个选项卡.
我在我的主Activity中尝试了以下方法:
// debugger breakpoints tell me this method is always called when other activity is shown ...
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
int pos = getActionBar().getSelectedNavigationIndex();
outState.putInt("tab", pos);
}
// however, in onCreate() my savedInstanceState is always 'null' ...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.invalidateOptionsMenu();
setContentView(R.layout.activity_main);
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mSectionsPagerAdapter = new SectionsPagerAdapter(
getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager
.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) …
Run Code Online (Sandbox Code Playgroud) 似乎很多人在Apple官方论坛上遇到过这个问题,但还没有找到解决方案,所以我想在这里试试运气:)
使用iOS 5.0 SDK和Xcode 4.2(beta 3)似乎搞砸了,找不到libxml2的头文件.然而,当我浏览SDK目录时,我清楚地看到一个名为libxml2/libxml的文件夹,其中包含我需要导入的所有标头.
我想知道是否有人找到了解决方案.到目前为止,我发现可能有用的唯一解决方案是将所有标头复制到项目中,然后修改标头的导入路径(从导入中删除目录).据我所知,这删除了所有错误,但由于我不喜欢这个"修复",因此无法更改libxml的所有import语句.
我想知道在Git中是否可以检索标签列表(很像git tag
命令的结果),但列表应该仅限于某个分支.
如果可以,有人可以解释这是怎么做的吗?也许有一些模式匹配魔法?
我为ObjC类创建了自己的Delegate.该类本身处理核心数据操作.委托方法用于通知其他类有关数据存储区发生的更改.处理数据存储区的类称为数据存储区,它的委托称为DatastoreDelegate.我的UIViewController(ContactsViewController)实现了委托.
我的DatastoreDelegate声明如下:
@class Datastore;
@protocol DatastoreDelegate <NSObject>;
@optional
- (void)didAddMessage:(Message *)message;
- (void)didUpdateContact:(Contact *)contact;
- (void)didAddContact:(Contact *)contact;
- (void)didUpdateContact:(Contact *)contact;
- (void)didDeleteContacts;
@end
Run Code Online (Sandbox Code Playgroud)
奇怪的是,除了[didAddMessage:]方法之外,我的代码都可以正常使用这些方法.每当我尝试从Datastore类中调用此委托时,我都会从ContactsViewController中收到错误.该错误告诉我在ContactsViewController实例中缺少[didAddMessage:]选择器(发送到实例的无法识别的选择器).如果它是可选的,选择器怎么会丢失?
我应该注意我的Datastore类是Singleton.我不确定这是否与我遇到的这个问题有某种关系.
我正在尝试添加一个"主页"和"工作"地址我的个人记录.它似乎只显示1个(稍后添加的那个.是否有可能向Person添加多个地址并看到它们显示在UnknownPersonViewController中?如果是这样,我该怎么做?
这是我的代码:
void multiValueAddDictionaryValueAndLabel(ABMultiValueRef multi, CFDictionaryRef values, CFStringRef label) {
if (multi && values != NULL) {
ABMultiValueAddValueAndLabel(multi, values, label, NULL);
}
}
CFStringRef getValueForKey(CFDictionaryRef dict, CFStringRef key) {
CFStringRef value = NULL;
if (CFDictionaryContainsKey(dict, key)) {
value = CFDictionaryGetValue(dict, key);
}
return value;
}
ABRecordRef createPerson(CFDictionaryRef dict) {
ABRecordRef person = ABPersonCreate();
/*
Add work address ...
*/
ABMultiValueRef workAddress = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
NSDictionary *values = [NSDictionary dictionaryWithObjectsAndKeys:
(NSString *)getValueForKey(dict, CFSTR("d:street")), (NSString *)kABPersonAddressStreetKey,
(NSString *)getValueForKey(dict, CFSTR("d:postalcode")), (NSString *)kABPersonAddressZIPKey,
(NSString *)getValueForKey(dict, …
Run Code Online (Sandbox Code Playgroud) 我的场景:尝试将我们公司创建的应用程序的一小部分从本机代码(用于iOS的iOS/Java的ObjC)移植到C-Sharp.该项目将与我们的Web服务进行交互.该项目的目标是确定将整个应用程序移植到Mono的可行性.
要创建URL,我想使用String.Format()
.我认为将这个'服务层'放在可移植类库(PCL)中是个明智的想法,因为我不希望这些代码在不同平台上发生变化.可悲的是,似乎字符串库不适用于PCL.
所以我的问题如下:
我已经UITableView
进入UIViewController
并通过outlet和delegete连接,并且数据源被分配给自己.numberOfSectionsInTableView
并且numberOfRowsInSection
正在调用我尝试使用NSLog
但是cellForRowAtIndexPath
没有调用我的代码看起来像
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@" cellForRowAtIndexPath ");
static NSString *CellIdentifier = @"CurrencyCell";
CurrencyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[CurrencyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] ;
}
new *Obj = [appdelegate.array objectAtIndex:indexPath.row];
cell.CurNameLabel.text = Obj.C_Name;
cell.textLabel.text = @"sdfnhsdfndsio;";
NSLog(@"C_Name %@", Obj.C_Name);
return cell;
}
Run Code Online (Sandbox Code Playgroud)
任何一个电话我都会犯错误提前谢谢
我最近下载并安装了MonoTouch&Mono for Android试用版SDK.包括MonoDevelop,我使用这个工具进行开发.我正在尝试创建一个多平台的应用程序.
我正在尝试调用Web服务并解析返回的JSON数据.不知何故,似乎缺少System.JSON库.
也许我做错了什么或错过了什么.任何人都知道如何解决这个问题?
编辑:如果确实缺少System.Json,我可能不得不诉诸这个项目 ......
当我尝试使用以下自定义单元格编码时,它显示错误.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpletablcellCell";
SimpletablcellCell *cell = (SimpletablcellCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpletablcellCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.nameLabel.text = [ar objectAtIndex:indexPath.row];
cell.thumbnailImageView.image = [UIImage imageNamed:[ar1 objectAtIndex:indexPath.row]];
cell.prepTimeLabel.text = [ar objectAtIndex:indexPath.row];
return cell;
}
Run Code Online (Sandbox Code Playgroud)
错误消息
'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/apple/Library/Application Support/iPhone Simulator/6.0/Applications/FE02B3A1-C40C-4FAC-BBA6-B245350F3754/SImpleTab.app> (loaded)' with name 'SimpletablcellCell''
*** First throw call stack:
(0x1c8f012 0x10cce7e 0x1c8edeb 0x22ffac 0x23198d …
Run Code Online (Sandbox Code Playgroud)