2013-04-18 2 views
1

Я расшифровал некоторые файлы заголовков, и это файл заголовка, который я хотел бы связать с ним.Hooking IVAR in the error

/** 
* This header is generated by class-dump-z 0.2a. 
* class-dump-z is Copyright (C) 2009 by KennyTM~, licensed under GPLv3. 
* 
* Source: (null) 
*/ 

#import <XXUnknownSuperclass.h> // Unknown library 
#import "InAppNotificationMessageViewDelegate.h" 
#import "FBMSessionClassProvidable.h" 

@class InAppNotificationContainerView, ProjectGatingChecker, FBMViewProvider, InAppNotificationBadgeCounter, FBMBeeperListFetcher; 
@protocol FBMNavigator, FBProvider, FBMAppProperties; 

@interface InAppNotificationManager : XXUnknownSuperclass <InAppNotificationMessageViewDelegate, FBMSessionClassProvidable> { 
    id<FBMNavigator> _navigator; 
    FBMBeeperListFetcher* _beeperListFetcher; 
    InAppNotificationBadgeCounter* _badgeCounter; 
    FBMViewProvider* _notificationMessageViewProvider; 
    InAppNotificationContainerView* _notificationContainerView; 
    FBMViewProvider* _notificationContainerViewProvider; 
    id<FBMAppProperties> _appProperties; 
    ProjectGatingChecker* _gatingChecker; 
    id<FBProvider> _rootNavControllerProvider; 
    id<FBProvider> _threadViewControllerProvider; 
} 
@property(retain, nonatomic) id<FBMAppProperties> appProperties; 
@property(retain, nonatomic) id<FBProvider> threadViewControllerProvider; 
@property(retain, nonatomic) id<FBMNavigator> navigator; 
@property(retain, nonatomic) ProjectGatingChecker* gatingChecker; 

Так что я хотел бы подключить Ивар gatingChecker, я использовал logify и создал эти строки:

%hook InAppNotificationManager 


- (void)setGatingChecker:(ProjectGatingChecker*)gatingChecker { %log; %orig; } 
- (ProjectGatingChecker*)gatingChecker { %log; ProjectGatingChecker* r = %orig; NSLog(@" = %@", r); return r; } 


%end 

Когда я пытаюсь скомпилировать это, я получаю:

Tweak.xm:9: error: ‘ProjectGatingChecker’ has not been declared 
Tweak.xm:9: error: ‘ProjectGatingChecker’ has not been declared 
Tweak.xm:9: error: expected initializer before ‘*’ token 
Tweak.xm:9: error: expected initializer before ‘*’ token 
Tweak.xm:353: error: ‘ProjectGatingChecker’ has not been declared 
Tweak.xm:354: error: expected initializer before ‘*’ token 
Tweak.xm: In function ‘void _logosLocalInit()’: 
Tweak.xm:361: error: ‘_logos_method$_ungrouped$InAppNotificationManager$gatingChecker’ was not declared in this scope 
Tweak.xm:361: error: ‘_logos_orig$_ungrouped$InAppNotificationManager$gatingChecker’ was not declared in this scope 
make[2]: *** [obj/Tweak.xm.673b4229.o] Error 1 
make[1]: *** [internal-library-all_] Error 2 

ответ

3

вы подключаетесь к переменным экземпляра с использованием MSHookIvar

ProjectGatingChecker *myGatingChecker = MSHookIvar<ProjectGatingChecker *>(self, "_gatingChecker"); 

Теперь вы можете использовать myGatingChecker, который будет указателем на привязанную переменную.

 Смежные вопросы

  • Нет связанных вопросов^_^