Skip to content

Commit 8347a4d

Browse files
Release 2.0.0 GA (#245)
* Bump version number to 2.0.0 * 'Optimizely Bucketing ID' --> '' per reference java-sdk and design doc * Update CHANGELOG.md * Add 'Bug Fixes' to CHANGELOG.md * unexported_symbols.txt update * Rebuild universal frameworks
1 parent ce3c69c commit 8347a4d

File tree

31 files changed

+150
-42
lines changed

31 files changed

+150
-42
lines changed

CHANGELOG.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Optimizely Objective-C SDK Changelog
2-
## 2.0.0-beta1
3-
April 5, 2018
2+
## 2.0.0
3+
April 23, 2018
44

55
This major release of the Optimizely SDK introduces APIs for Feature Management.
66

@@ -58,6 +58,32 @@ This major release of the Optimizely SDK introduces APIs for Feature Management.
5858
attributes:(nullable NSDictionary<NSString *, NSString *> *)attributes;
5959
```
6060

61+
* Introducing Optimizely Notification Center with Notification Listeners
62+
Optimizely object now has a Notification Center
63+
```
64+
@property (nonatomic, strong, readonly, nullable) OPTLYNotificationCenter *notificationCenter;
65+
```
66+
with Notification Listeners APIs
67+
```
68+
- (NSInteger)addActivateNotificationListener:(nonnull ActivateListener)activateListener;
69+
- (NSInteger)addTrackNotificationListener:(TrackListener _Nonnull )trackListener;
70+
- (BOOL)removeNotificationListener:(NSUInteger)notificationId;
71+
- (void)clearNotificationListeners:(OPTLYNotificationType)type;
72+
- (void)clearAllNotificationListeners;
73+
```
74+
* Added `@"$opt_bucketing_id"` in the attribute map for overriding bucketing using the user id. This string is
75+
available as OptimizelyBucketId in OPTLYEventBuilder.h .
76+
77+
### Bug Fixes:
78+
* Fix single quote in events issue. Event was sent repeatedly because it was
79+
unable to be deleted from data store due to syntax error.
80+
* Remove "Pod_..." static library from demo app "Embedded Frameworks".
81+
* Fix red Xcode Project Navigator group folder.
82+
83+
### Breaking Changes
84+
* Removed track APIs with revenue as a parameter.
85+
* Deprecated live variable APIs.
86+
6187
## 1.5.0
6288
December 6, 2017
6389

OptimizelySDKCore.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "OptimizelySDKCore"
3-
s.version = "2.0.0-beta1"
3+
s.version = "2.0.0"
44
s.summary = "Optimizely server-side testing core framework."
55
s.homepage = "http://developers.optimizely.com/server/reference/index.html?language=objectivec"
66
s.license = { :type => "Apache License, Version 2.0", :file => "LICENSE" }

OptimizelySDKCore/OptimizelySDKCore.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2185,7 +2185,7 @@
21852185
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
21862186
OPTIMIZELY_SDK_VERSION_MINOR = 0;
21872187
OPTIMIZELY_SDK_VERSION_PATCH = 0;
2188-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
2188+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
21892189
PRODUCT_MODULE_NAME = "$(PRODUCT_NAME)";
21902190
SDKROOT = iphoneos;
21912191
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
@@ -2462,7 +2462,7 @@
24622462
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
24632463
OPTIMIZELY_SDK_VERSION_MINOR = 0;
24642464
OPTIMIZELY_SDK_VERSION_PATCH = 0;
2465-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
2465+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
24662466
PRODUCT_MODULE_NAME = "$(PRODUCT_NAME)";
24672467
SDKROOT = iphoneos;
24682468
TARGETED_DEVICE_FAMILY = "1,2";

OptimizelySDKCore/OptimizelySDKCore/OPTLYDecisionService.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#import "OPTLYFeatureDecision.h"
3232
#import "OPTLYGroup.h"
3333

34-
NSString * _Nonnull const OptimizelyBucketId = @"Optimizely Bucketing ID";
34+
NSString * _Nonnull const OptimizelyBucketId = @"$opt_bucketing_id";
3535

3636
@interface OPTLYDecisionService()
3737
@property (nonatomic, strong) OPTLYProjectConfig *config;

OptimizelySDKDatafileManager.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "OptimizelySDKDatafileManager"
3-
s.version = "2.0.0-beta1"
3+
s.version = "2.0.0"
44
s.summary = "Optimizely server-side testing datafile manager framework."
55
s.homepage = "http://developers.optimizely.com/server/reference/index.html?language=objectivec"
66
s.license = { :type => "Apache License, Version 2.0", :file => "LICENSE" }
@@ -16,5 +16,5 @@ Pod::Spec.new do |s|
1616
s.framework = "Foundation"
1717
s.requires_arc = true
1818
s.xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => "OPTIMIZELY_SDK_VERSION=@\\\"#{s.version}\\\"" }
19-
s.dependency 'OptimizelySDKShared', '2.0.0-beta1'
19+
s.dependency 'OptimizelySDKShared', '2.0.0'
2020
end

OptimizelySDKDatafileManager/OptimizelySDKDatafileManager.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,7 @@
834834
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
835835
OPTIMIZELY_SDK_VERSION_MINOR = 0;
836836
OPTIMIZELY_SDK_VERSION_PATCH = 0;
837-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
837+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
838838
SDKROOT = iphoneos;
839839
TARGETED_DEVICE_FAMILY = "1,2";
840840
VALIDATE_PRODUCT = YES;
@@ -902,7 +902,7 @@
902902
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
903903
OPTIMIZELY_SDK_VERSION_MINOR = 0;
904904
OPTIMIZELY_SDK_VERSION_PATCH = 0;
905-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
905+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
906906
SDKROOT = iphoneos;
907907
TARGETED_DEVICE_FAMILY = "1,2";
908908
VERSIONING_SYSTEM = "apple-generic";

OptimizelySDKEventDispatcher.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "OptimizelySDKEventDispatcher"
3-
s.version = "2.0.0-beta1"
3+
s.version = "2.0.0"
44
s.summary = "Optimizely server-side testing event dispatcher framework."
55
s.homepage = "http://developers.optimizely.com/server/reference/index.html?language=objectivec"
66
s.license = { :type => "Apache License, Version 2.0", :file => "LICENSE" }
@@ -16,5 +16,5 @@ Pod::Spec.new do |s|
1616
s.framework = "Foundation"
1717
s.requires_arc = true
1818
s.xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => "OPTIMIZELY_SDK_VERSION=@\\\"#{s.version}\\\"" }
19-
s.dependency 'OptimizelySDKShared', '2.0.0-beta1'
19+
s.dependency 'OptimizelySDKShared', '2.0.0'
2020
end

OptimizelySDKEventDispatcher/OptimizelySDKEventDispatcher.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,7 @@
710710
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
711711
OPTIMIZELY_SDK_VERSION_MINOR = 0;
712712
OPTIMIZELY_SDK_VERSION_PATCH = 0;
713-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
713+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
714714
SDKROOT = iphoneos;
715715
TARGETED_DEVICE_FAMILY = "1,2";
716716
VALIDATE_PRODUCT = YES;
@@ -780,7 +780,7 @@
780780
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
781781
OPTIMIZELY_SDK_VERSION_MINOR = 0;
782782
OPTIMIZELY_SDK_VERSION_PATCH = 0;
783-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
783+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
784784
SDKROOT = iphoneos;
785785
TARGETED_DEVICE_FAMILY = "1,2";
786786
VERSIONING_SYSTEM = "apple-generic";

OptimizelySDKShared.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "OptimizelySDKShared"
3-
s.version = "2.0.0-beta1"
3+
s.version = "2.0.0"
44
s.summary = "Optimizely server-side testing shared framework."
55
s.homepage = "http://developers.optimizely.com/server/reference/index.html?language=objectivec"
66
s.license = { :type => "Apache License, Version 2.0", :file => "LICENSE" }
@@ -18,5 +18,5 @@ Pod::Spec.new do |s|
1818
s.ios.library = "sqlite3"
1919
s.requires_arc = true
2020
s.xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => "OPTIMIZELY_SDK_VERSION=@\\\"#{s.version}\\\"" }
21-
s.dependency 'OptimizelySDKCore', '2.0.0-beta1'
21+
s.dependency 'OptimizelySDKCore', '2.0.0'
2222
end

OptimizelySDKShared/OptimizelySDKShared.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,7 +1131,7 @@
11311131
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
11321132
OPTIMIZELY_SDK_VERSION_MINOR = 0;
11331133
OPTIMIZELY_SDK_VERSION_PATCH = 0;
1134-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
1134+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
11351135
SDKROOT = iphoneos;
11361136
TARGETED_DEVICE_FAMILY = "1,2";
11371137
VALIDATE_PRODUCT = YES;
@@ -1201,7 +1201,7 @@
12011201
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
12021202
OPTIMIZELY_SDK_VERSION_MINOR = 0;
12031203
OPTIMIZELY_SDK_VERSION_PATCH = 0;
1204-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
1204+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
12051205
SDKROOT = iphoneos;
12061206
TARGETED_DEVICE_FAMILY = "1,2";
12071207
VERSIONING_SYSTEM = "apple-generic";

OptimizelySDKTVOS.podspec

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "OptimizelySDKTVOS"
3-
s.version = "2.0.0-beta1"
3+
s.version = "2.0.0"
44
s.summary = "Optimizely server-side testing framework for tvOS."
55
s.homepage = "http://developers.optimizely.com/server/reference/index.html?language=objectivec"
66
s.license = { :type => "Apache License, Version 2.0", :file => "LICENSE" }
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
1616
s.framework = "Foundation"
1717
s.requires_arc = true
1818
s.xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => "OPTIMIZELY_SDK_VERSION=@\\\"#{s.version}\\\"" }
19-
s.dependency 'OptimizelySDKEventDispatcher', '2.0.0-beta1'
20-
s.dependency 'OptimizelySDKUserProfileService', '2.0.0-beta1'
21-
s.dependency 'OptimizelySDKDatafileManager', '2.0.0-beta1'
19+
s.dependency 'OptimizelySDKEventDispatcher', '2.0.0'
20+
s.dependency 'OptimizelySDKUserProfileService', '2.0.0'
21+
s.dependency 'OptimizelySDKDatafileManager', '2.0.0'
2222
end

OptimizelySDKTVOS/OptimizelySDKTVOS.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@
680680
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
681681
OPTIMIZELY_SDK_VERSION_MINOR = 0;
682682
OPTIMIZELY_SDK_VERSION_PATCH = 0;
683-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
683+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
684684
SDKROOT = appletvos;
685685
TARGETED_DEVICE_FAMILY = 3;
686686
TVOS_DEPLOYMENT_TARGET = 9.0;
@@ -774,7 +774,7 @@
774774
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
775775
OPTIMIZELY_SDK_VERSION_MINOR = 0;
776776
OPTIMIZELY_SDK_VERSION_PATCH = 0;
777-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
777+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
778778
SDKROOT = appletvos;
779779
TARGETED_DEVICE_FAMILY = 3;
780780
TVOS_DEPLOYMENT_TARGET = 9.0;

OptimizelySDKUniversal/OptimizelySDKUniversal.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1933,7 +1933,7 @@
19331933
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
19341934
OPTIMIZELY_SDK_VERSION_MINOR = 0;
19351935
OPTIMIZELY_SDK_VERSION_PATCH = 0;
1936-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
1936+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
19371937
RESOURCES_TARGETED_DEVICE_FAMILY = "";
19381938
SDKROOT = iphoneos;
19391939
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator appletv appletvsimulator";
@@ -2003,7 +2003,7 @@
20032003
OPTIMIZELY_SDK_VERSION_MAJOR = 2;
20042004
OPTIMIZELY_SDK_VERSION_MINOR = 0;
20052005
OPTIMIZELY_SDK_VERSION_PATCH = 0;
2006-
OPTIMIZELY_SDK_VERSION_SUFFIX = "-beta1";
2006+
OPTIMIZELY_SDK_VERSION_SUFFIX = "";
20072007
RESOURCES_TARGETED_DEVICE_FAMILY = "";
20082008
SDKROOT = iphoneos;
20092009
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator appletv appletvsimulator";

OptimizelySDKUniversal/generated-frameworks/Release-iOS-universal-SDK/OptimizelySDKiOS.framework/Headers/OPTLYDataStore.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,15 @@ typedef NS_ENUM(NSUInteger, OPTLYDataStoreEventType)
196196
eventType:(OPTLYDataStoreEventType)eventType
197197
error:(NSError * _Nullable __autoreleasing * _Nullable)error;
198198

199+
/**
200+
* Gets the last entry id.
201+
*
202+
* @param eventType The event type of the data that needs to be removed.
203+
* @param error An error object is returned if an error occurs.
204+
*/
205+
- (NSInteger)getLastEventId:(OPTLYDataStoreEventType)eventType
206+
error:(NSError * _Nullable __autoreleasing * _Nullable)error;
207+
199208
/**
200209
* Gets all events.
201210
*

OptimizelySDKUniversal/generated-frameworks/Release-iOS-universal-SDK/OptimizelySDKiOS.framework/Headers/OPTLYDatabase.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,17 @@
109109
table:(nonnull NSString *)tableName
110110
error:(NSError * _Nullable __autoreleasing * _Nullable)error;
111111

112+
/**
113+
* Retrieves an id of last entry from the table.
114+
*
115+
* @param tableName The database table name.
116+
* @param error An error object is returned if an error occurs.
117+
* @return The return value is an id of NSInteger
118+
*/
119+
120+
- (NSInteger)retrieveLastEntryId:(NSString * _Nonnull)tableName
121+
error:(NSError * _Nullable __autoreleasing * _Nullable)error;
122+
112123
/**
113124
* Returns the number of rows of a table.
114125
*

OptimizelySDKUniversal/generated-frameworks/Release-iOS-universal-SDK/OptimizelySDKiOS.framework/Headers/OPTLYEventDataStore.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@
5454
eventType:(nonnull NSString *)eventTypeName
5555
error:(NSError * _Nullable __autoreleasing * _Nullable)error;
5656

57+
/**
58+
* Gets the last entry id.
59+
*
60+
* @param eventTypeName The name of the event type of the data that needs to be removed.
61+
* @param error An error object is returned if an error occurs.
62+
*/
63+
- (NSInteger)getLastEventId:(nonnull NSString *)eventTypeName
64+
error:(NSError * _Nullable __autoreleasing * _Nullable)error;
65+
5766
/**
5867
* Deletes the first N events (i.e., the N oldest events).
5968
*

OptimizelySDKUniversal/generated-frameworks/Release-iOS-universal-SDK/OptimizelySDKiOS.framework/Headers/OPTLYNotificationCenter.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,18 +74,18 @@ typedef NSMutableDictionary<NSNumber *, GenericListener > OPTLYNotificationHolde
7474
* @param notificationId the id passed back from add notification.
7575
* @return true if removed otherwise false (if the notification is already removed, it returns false).
7676
*/
77-
- (BOOL)removeNotification:(NSUInteger)notificationId;
77+
- (BOOL)removeNotificationListener:(NSUInteger)notificationId;
7878

7979
/**
8080
* Clear notification listeners by notification type.
8181
* @param type type of OPTLYNotificationType to remove.
8282
*/
83-
- (void)clearNotifications:(OPTLYNotificationType)type;
83+
- (void)clearNotificationListeners:(OPTLYNotificationType)type;
8484

8585
/**
8686
* Clear out all the notification listeners.
8787
*/
88-
- (void)clearAllNotifications;
88+
- (void)clearAllNotificationListeners;
8989

9090
//
9191
/**

OptimizelySDKUniversal/generated-frameworks/Release-iOS-universal-SDK/OptimizelySDKiOS.framework/Headers/OPTLYQueue.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ extern const NSInteger OPTLYQueueDefaultMaxSize;
7474
*/
7575
- (id)front;
7676

77+
/**
78+
* Returns an index of the latest item in the queue (the queue is not mutated).
79+
*
80+
* @return An index of the latest item in the queue.
81+
*/
82+
- (NSInteger)lastItemIndex;
83+
7784
/**
7885
* Returns a copy of the oldest N items in the queue (the queue is not mutated).
7986
*

OptimizelySDKUniversal/generated-frameworks/Release-tvOS-universal-SDK/OptimizelySDKTVOS.framework/Headers/OPTLYDataStore.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,15 @@ typedef NS_ENUM(NSUInteger, OPTLYDataStoreEventType)
196196
eventType:(OPTLYDataStoreEventType)eventType
197197
error:(NSError * _Nullable __autoreleasing * _Nullable)error;
198198

199+
/**
200+
* Gets the last entry id.
201+
*
202+
* @param eventType The event type of the data that needs to be removed.
203+
* @param error An error object is returned if an error occurs.
204+
*/
205+
- (NSInteger)getLastEventId:(OPTLYDataStoreEventType)eventType
206+
error:(NSError * _Nullable __autoreleasing * _Nullable)error;
207+
199208
/**
200209
* Gets all events.
201210
*

OptimizelySDKUniversal/generated-frameworks/Release-tvOS-universal-SDK/OptimizelySDKTVOS.framework/Headers/OPTLYEventDataStore.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@
5454
eventType:(nonnull NSString *)eventTypeName
5555
error:(NSError * _Nullable __autoreleasing * _Nullable)error;
5656

57+
/**
58+
* Gets the last entry id.
59+
*
60+
* @param eventTypeName The name of the event type of the data that needs to be removed.
61+
* @param error An error object is returned if an error occurs.
62+
*/
63+
- (NSInteger)getLastEventId:(nonnull NSString *)eventTypeName
64+
error:(NSError * _Nullable __autoreleasing * _Nullable)error;
65+
5766
/**
5867
* Deletes the first N events (i.e., the N oldest events).
5968
*

OptimizelySDKUniversal/generated-frameworks/Release-tvOS-universal-SDK/OptimizelySDKTVOS.framework/Headers/OPTLYNotificationCenter.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,18 +74,18 @@ typedef NSMutableDictionary<NSNumber *, GenericListener > OPTLYNotificationHolde
7474
* @param notificationId the id passed back from add notification.
7575
* @return true if removed otherwise false (if the notification is already removed, it returns false).
7676
*/
77-
- (BOOL)removeNotification:(NSUInteger)notificationId;
77+
- (BOOL)removeNotificationListener:(NSUInteger)notificationId;
7878

7979
/**
8080
* Clear notification listeners by notification type.
8181
* @param type type of OPTLYNotificationType to remove.
8282
*/
83-
- (void)clearNotifications:(OPTLYNotificationType)type;
83+
- (void)clearNotificationListeners:(OPTLYNotificationType)type;
8484

8585
/**
8686
* Clear out all the notification listeners.
8787
*/
88-
- (void)clearAllNotifications;
88+
- (void)clearAllNotificationListeners;
8989

9090
//
9191
/**

OptimizelySDKUniversal/generated-frameworks/Release-tvOS-universal-SDK/OptimizelySDKTVOS.framework/Headers/OPTLYQueue.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ extern const NSInteger OPTLYQueueDefaultMaxSize;
7474
*/
7575
- (id)front;
7676

77+
/**
78+
* Returns an index of the latest item in the queue (the queue is not mutated).
79+
*
80+
* @return An index of the latest item in the queue.
81+
*/
82+
- (NSInteger)lastItemIndex;
83+
7784
/**
7885
* Returns a copy of the oldest N items in the queue (the queue is not mutated).
7986
*

0 commit comments

Comments
 (0)